![5cd0b71dc2fe607ca995220448c36195.png](https://i-blog.csdnimg.cn/blog_migrate/df328c6f8344cccd3ed0529fc628aaf5.png)
- 准备好开发环境并且安装好Django框架之后,我们就可以开始一个项目了。本文现在使用的Django版本是最新的3.0版本,只用来学习使用。
- Django是一个重量级的框架,之所以称为重量级,原因就是Django内置的组件和功能十分的丰富,可以让你很简单的就开发出一个网站,这也是Django设计之初的目的。
创建Django项目
- django-admin startproject 项目的名称 使用该命令就可以创建一个Django项目
- 执行完该命令之后,会在你指定的项目文件夹中创建一下几个文件,这里做一下简单的说明
![896bcfdce52946ae89273b2ba60c4f38.png](https://i-blog.csdnimg.cn/blog_migrate/283fd2bcf26b7ef1678fdf4e0c5b5260.png)
- 从理论上将项目根目录起任何名字都可以,这个名字可以随意进行更改。
- _init_.py: 将该项目当作一个python包
- settings.py: 项目的配置文件,里面包含了很多关于项目的配置。
- urls.py: 项目的路由配置,在该文件中定义路由匹配规则。
- wsgi.py: 符合WSGI协议的web服务器的入口。
- asgi.py: 兼容ASGI的Web服务器为您的项目提供服务的入口点
- manage.py: 项目的管理文件和命令行工具
运行开发服务器
- python manage.py runserver或者使用django-admin runserver运行服务器
- 默认运行在127.0.0.1, 8000端口
本地化配置
- 修改时区和语言:
-
- LANGUAGE_CODE = 'zh-hans'
- TIME_ZONE = 'Asia/Shanghai'
-
访问
- 打开[浏览器[1]]
![532c8ba3906b891af5f90d3b882fdde6.png](https://i-blog.csdnimg.cn/blog_migrate/f1bf785d0d4144aa1fa10a577b3c8b33.png)
关于manage.py和django-admin
- manage.py会在每个Django项目中自动创建
- 可以使用django-admin命令做和manage.py同样的事情,,使用django-admin的时候,需要配置
DJANGO_SETTINGS_MODULE
环境变量,使其指向项目的配置文件。 - 获取帮助信息
- django-admin help: 列出所有命令列表
- django-admin help --commands: 显示所有可用命令的列表
- django-admin help command: 显示一个命令的详细信息
- 检查版本
- django-admin --version: 获取运行Django的版本号
- 检查问题
- django-amdin check appname appname: 运行Django自带的检查框架来检查运行问题
- 可以指定appname,这将会检查具体的某一个应用,但是如果不指定应用名称的话,会默认检查全部的应用
- 进入数据库shell
- django-admin dbshell:运行数据库的命令行客户端
- 如果你已经修改了配置文件的数据库,请确保配置中的账号和密码正确
- 检查已经修改了哪些配置项
- django-admin diffsettings:显示当前文件和默认设置文件的差异
- 未出现在默认设置中的设置后面有###标识。
- 进行数据库迁移
- django-admin makemigrations:生成迁移文件
- django-admin migrate: 执行数据库迁移
- 当使用Django的数据库迁移之后,不要直接修改数据库,容易造成数据库字段和Django维护的迁移记录不一致,从而产生报错。
创建子应用
- python manage.py startapp 子应用名: 该命令将创建一个django子应用
- 子应用的目录结构如下
![7a81374890f5ac5b88f22f85e717027d.png](https://i-blog.csdnimg.cn/blog_migrate/b131fcfdfc9878e08a801a5b67258e4e.png)
- admin.py: 和后台管理相关的配置
- apps.py: 当前子应用的信息
- migrations目录:存放子应用的迁移数历史文件
- models.py: 存放模型类
- tests.py:编写测试
- views.py: 编写视图函数
- 这里说一下,默认创建的子应用并没有urls.py这个文件,但是我们会在子应用中使用,有两种方式创建
- 直接在子应用文件夹中新建一个python文件(手动修改)
- 修改django项目源代码(永久修改)
文件位置:site-packages/django/conf/app_template,可以将project template中的project_name中的urls.py-tpl文件复制到app_template目录中,这样就可以在使用创建子应用的命令时创建对应的文件。
编写视图函数
def index(request):
"""
首页
:param request: Django请求对象
:return: response对象
"""
return HttpResponse("Hello Django! This is index!")
- request:请求对象,每个视图函数必须接收的参数
- HttpResponse: 只能返回字符串新式的响应
- JsonResponse: 只能返回json格式的响应,JsonResponse内部已经帮我们设置了响应的content_type为application/json,并且将传入的data使用json.dumps进行序列化。
进行路由匹配
- 在子路由中进行路由匹配
from django.urls import path
from . import views
urlpatterns = [
path(r'', views.index, name='index'),
]
2. 在总路由中进行路由包含
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('polls', include('polls.urls')),
]
- include()函数允许包含其他的url,每当遇到include()函数的时候,会截断与此项匹配的url部分,并且将生育的字符串发送到include包含的url中进行再次匹配。
- path函数参数
path = partial(_path, Pattern=RoutePattern)
def _path(route, view, kwargs=None, name=None, Pattern=None):
pass
route: url模式,正则表达式
view: 视图函数名,满足url模式就会调用对应的视图函数
kwargs: 传递给视图函数的关键字参数
name: url的命名,以便在其他地方引用,主要用于reverse()构建路由。
数据库的配置
- 有关数据库的配置,在settings文件中的DATABASES配置项
- Django默认使用的是sqlite数据库,如果需要修改为其他的数据库,比如mysql,需要做下面的改动
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'HOST': 'localhost', # 连接的主机地址
'PORT': 3316, # mysql端口号
'USER': 'root', # 连接用户名
'PASSWORD': 'root', # 数据库密码
'NAME': 'Myproject', # 连接的数据库名
}
}
- 在进行数据库连接的时候,首先要确保对应的数据库已经存在,需要手动进行创建。
创建模型类
class Choice(models.Model):
"""
选择模型类
"""
question = models.ForeignKey(Question, on_delete=models.CASCADE, verbose_name='问题')
choice_text = models.CharField(max_length=200, verbose_name='选择内容')
votes = models.IntegerField(default=0, verbose_name='投票数')
- 模型类需要继承自models.Model
- 模型类属性表示字段名
- 字段类型使用models.字段类型表示,选项参数会在稍后进行介绍
- 可以在类中指定数据库的表明(稍后介绍),如果不指明表明的话,将会以应用名小写_模型类名来命名。
- models.ForeignKey为当前的模型类定义了一个外键,和另一个模型类相关联。常见的关系有一对多,一对一,多对一三种
- 模型类并不需要定义主键,主键由Django自动生成和维护。
- Django自动给外键列增加_id,作为外键列的名称,是新版的特性。
注册安装子应用
- 在配置文件的INSTALLED_APPS中添加下面的项
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles', # django默认的一些应用,不需要的话,可以注释或者是删除
'polls.apps.PollsConfig', # 添加我们创建的子应用
]
执行数据库迁移
- 生成迁移文件: django-admin makemigrations
- 完成迁移: django-admin migrate
参考
- ^浏览器 http://127.0.0.1:8000