1. 什么是Django
Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M(Model),视图V(View)和模版T(Template)。
使用这种架构,程序员可以方便、快捷地创建高品质、易维护、数据库驱动的应用程序。
在Django框架中,还包含许多功能强大的第三方插件,使得Django具有较强的可扩展性。
Django的主要目的是简便、快速的开发数据库驱动的网站。它强调代码复用,多个组件可以很方便的以“插件”形式服务于整个框架。
本文操作环境:
Python 3.7.1 (官网下载https://www.python.org/downloads/)
Django 3.0.2
(pip install django官网pip下载https://pypi.org/project/pip/#files)
2. 选择创建项目路径
2.1 创建mysite项目名和blog应用
选择项目路径有两种情况:
1.打开cmd,cd+路径。(打开cmd默认是C盘的,一般情况创建项目都不在C盘,例如在D:/test。那么首先要切换到D盘,终端先输入D:回车,再cd test回车)。
C:\Users\admin>D:
D:\>cd test
D:\test>
2.同样是D:/test作为项目目录,打开D盘下的test文件夹,鼠标右键空白处在弹出的选项中点击在此处打开命令窗口(这样就直接在cmd打开test路径了)。
D:\test>
3. 创建项目
注意是在D盘test目录下输入命令,test作为项目目录。
# 创建mysite项目
D:\test>django-admin startproject mysite
# 切换到mysite目录
D:\test>cd mysite
# 创建blog应用
D:\test\mysite>python manage.py startapp blog
3.1 项目目录结构为:
3.2 项目目录介绍:
manage.py:Django项目里面的工具,通过它可以调用django shell和数据库等。
mysite/
--- settings.py:包含了项目的默认设置,数据库信息,调试标志,还有其他设置,比如静态文件、媒体文件的根目录等。
--- urls.py :负责把URL配置模式映射到应用程序。
--- wsgi.py:用于项目部署。
blog /
--- admin.py:django 自带admin后面管理,将models.py 中表映射到后台。
--- apps.py:blog 应用的相关配置。
--- models.py:Django 自带的ORM(对象关系映射),用于设计数据库表。
--- tests.py:用于编写Django单元测试。
--- veiws.py :视图文件,用于编写功能的主要处理逻辑。
3.3 setting.py配置文件,添加blog应用:
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
#新增的blog应用 由python manage.py startapp blog 生成的blog应用
'blog',
]
4. 初始化admin后台数据库
4.1 Python 自带SQLite3数据库,Django默认使用SQLite3数据库,如果使用其它数据库请在settings.py文件中设置
# Database
# https://docs.djangoproject.com/en/3.0/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
# Django使用mysql数据库设置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'blog',
'USER':'root',
'PASSWORD':'123456',
'HOST':'127.0.0.1',
'PORT':'3306',
}
}
4.2 Django默认帮我们做了很多事情,比如User、Session 这些都需要创建表来存储数据,Django已经把这些模块帮我们准备好了,我们只需要执行数据库同步,把相关表生成出来即可:
D:\test\mysite>python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying admin.0003_logentry_add_action_flag_choices... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying auth.0010_alter_group_name_max_length... OK
Applying auth.0011_update_proxy_permissions... OK
Applying sessions.0001_initial... OK
4.3 创建超级管理员帐号,登录admin后台,必须要有帐号
D:\test\mysite>python manage.py createsuperuser
Username (leave blank to use 'admin'): admin # 管理员帐号
Email address: [email protected] # email,任意输入一个就行
Password: # 密码,输入的时候不显示出来,其实输入了
Password (again): # 重复密码
#下面这段提示意思是,因为我输入的密码是admin,过于简单,测试阶段可以用简单密码,实战就需要复杂点,按要求设置,最少8个字符
The password is too similar to the username.
This password is too short. It must contain at least 8 characters.
This password is too common.
#询问你是否跳过密码验证,输入y回车即可
Bypass password validation and create user anyway? [y/N]: y
Superuser created successfully.
5. 启动项目,访问admin后台
D:\test\mysite>python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
January 08, 2020 - 09:58:29
Django version 3.0.2, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
5.1 浏览器访问:http://127.0.0.1:8000
默认是英文版本,设置中文后台与时区:
setting.py文件下设置。
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
5.2 访问Admin后台:http://127.0.0.0:8000/admin,通过前面创建的超级管理员账号登录
5.3 登录之后进入到后台主页面
到此,准备工作结束。
6. 设计Model(设计数据库表)
6.1 设计blog表
打开blog目录下的models.py文件,该类下的属性对应数据库字段。
from django.db import models
# Create your models here.
class BlogsPost(models.Model):
title = models.CharField(max_length = 150) # 博客标题
body = models.TextField() # 博客正文
timestamp = models.DateTimeField() # 创建时间
6.2 再次执行数据库同步,因为刚新增了数据模型表
会提示生成了0001_initial.py文件,该文件在blog应用下的_py_cache_文件下。
D:\test\mysite>python manage.py makemigrations blog
Migrations for 'blog':
blog\migrations\0001_initial.py
- Create model BlogsPost
6.3 把刚生成的0001_initial.py文件更新到数据库
D:\test\mysite>python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, blog, contenttypes, sessions
Running migrations:
Applying blog.0001_initial... OK
6.4 通过Admin管理
通过Admin后台来管理blog表数据。打开blog应用下的admin.py 文件。
from django.contrib import admin
from blog.models import BlogsPost
# Register your models here.
class BlogsPostAdmin(admin.ModelAdmin):
list_display = ['title', 'body', 'timestamp']
admin.site.register(BlogsPost, BlogsPostAdmin)
6.5 登录Admin后台添加blog
再次启动项目(python manage.py runserver),访问:http://127.0.0.1:8000/admin。
Django后台主页面上会多出Blog应用。
点击Add添加数据。
Time后面获取当前时间默认是不对的,相差了8小时。
在你的Django项目中setting.py找到TIME_ZONE配置,可以看到默认的是"UTC",这时需要把他更改为我们所在的时区,进行如下设置:
TIME_ZONE = 'Asia/Shangha
就ok了
6.6 点击SAVE 按钮保存,博客编写完成。
到此,数据部分已经搞定。
7. 创建视图
7.1 创建视图函数
打开blog应用下的views.py文件:
from django.shortcuts import render
from blog.models import BlogsPost
# Create your views here.
def blog_index(request):
blog_list = BlogsPost.objects.all() # 获取所有数据
return render(request,'index.html', {'blog_list':blog_list}) # 返回index.html页面
7.2 创建视图对应的模版
在blog应用下创建templates目录(blog/templates/),在目录下创建首页文件index.html,内容:(blog_list为视图view.py定义的变量)。
{% for blog in blog_list %}
<h2>{{ blog.title }}</h2>
<p>{{ blog.timestamp }}</p>
<p>{{ blog.body }}</p>
{% endfor %}
循环视图view.py文件渲染到页面的blog_list集合,显示标题,创建时间和正文。
blog_list = BlogPost.objects.all(),获取数据库里面表中所有的BlogPost对象。
render返回一个页面(index.html),顺带把数据库中查询出来的所有博客内容(blog_list)也一并返回。
7.3 创建blog应用的url模式
在mysite/urls.py文件里添加blog的url:
from django.contrib import admin
from django.urls import path
from blog import views
urlpatterns = [
path('admin/', admin.site.urls),
path('blog/', views.blog_index),
]
7.4 再次终端cmd启动服务
cmd命令python manage.py runserver,访问(http://127.0.0.1:8000/blog/)。
到此,项目开发完成
秒变大牛,就是这么简单~
每周每日,分享Python实战代码,入门资料,进阶资料,基础语法,爬虫,数据分析,web网站,机器学习,深度学习等等。
微信群(关注「Python家庭」一起轻松学Python吧)
QQ ②群(983031854)