目录
一.settings.py文件
这个文件包含了Django项目启动的所有配置项
配置项格式前面必须是大写,后面是字符串,构成一个键值对
BASE_DIR ='xxxx'
此文件包含公有配置和私有配置
1.公有配置
BASE_DIR = Path(__file__).resolve().parent.parent
用来确定项目文件夹的绝对路径
DEBUG = True
True:调试模式.功能: 1,提供报错页面 2,检查到代码更改,自动重启
False:正式模式/上线模式
LLOWED_HOSTS = []
允许访问的Host头
ROOT_URLCONF = 'mysite1.urls'
用来确定主路由文件的位置
LANGUAGE_CODE= 'zh-hans'
#LANGUAGE_CODE = 'en-us'
TIME_ZONE='Asia/Shanghai'
#TIME_ZONE = 'UTC'
确定使用的语言和时区
2.私有配置
首先需要满足配置规范,然后配置名称尽量个性化,以防覆盖公有配置
所有配置项都可以按需带代码中引用
from django.conf import settings
二.URL结构
protocol://hostname[:port]/path[?query][#fragment]
1.portocol(协议)
- http:通过超文本传输协议(http)访问资源
- https:基于http通过安全ssl或tls提供加密处理
- file:本地计算机的资源
2.hostname(主机名)
是指存放资源的域名系统主机名,域名或ip地址
3.port(端口号)
可选,开放服务的端口,http默认为80
4.path(路由地址)
由 ”/“隔开的字符串用来表示主机上一个目录或文件地址。路由地址决定了服务端如何处理这个请求
5.query(查询)
可选,用于给动态网页传递参数,可有多个参数,用&隔开,每个是由=连接的键值对
6.fragment(信息片段,锚点)
一个字符串,用于指定网页资源的片段。例如一个网页由多个名词解释,可用其直接定位到某一名词
三.处理URL请求
1.Django从配置文件中根据ROOT _URLCONF 配置参数找到主路由文件,默认在项目同名目录下的urls
2.Django 加载主路由文件的urlpatterns数组,由上至下一一进行匹配,找到一个匹配成功的结果中断匹配
3.匹配成功,调用视图函数返回响应,或调用include函数转至下级urls.py文件 匹配失败,返回404响应
四.视图函数
from django.http import HttpResponse
def index(request):
html='<h1>这是我的首页</h1>'
return HttpResponse(html)
必须引入HttpResponse模块
传入的参数第一个必须是request
五.路由与视图配置
1.路由配置—path()函数
导入:from django.urls import path
语法:path(route,views,name=None)
参数:1.route:字符串类型,匹配的请求路径
2.views:指定路径所对应的视图处理函数的名称,注意不要加括号
3.name:为地址起别名,在模板中地址反向解析时使用
2.简单路由配置
urls.py代码
from django.contrib import admin
from django.urls import path
from . import views
urlpatterns = [
path('admin/', admin.site.urls),
path('page/1/',views.page_1,name='view_page_1'),
]
需要引入同目录下的views .py文件
views.py 需要写出对应视图函数,并按需返回响应
3.path--转换器
语法:<转换器类型:自定义名>
作用:若转换器类型匹配到对应类型的数据,则将数据按照关键字传参的方式传递给对应的视图函数
例子:
path (’page/<int pg>‘,views.pagen)
转换器类型
转换器类型 | 作用 |
str | 匹配除'/'以外的非空字符串 |
int | 匹配0和任何整数,返回int数据 |
slug | 匹配任意由ASCII字母或数字以 及连字符和下划线组成的短标签 |
path | 匹配非空字段,包括'/' |
对应views里函数代码
def pagen(request,pg):
html='<h1>这是编号为%s的网页</h1>'%(pg)
return HttpResponse(html)
若path不能很好的表示url可以使用re_path(正则表达式)
4.include()函数
在主urls.py 中需要将路由调至app中,用到include函数
比如
path('polls',include('polls.urls')),
此时应注意引入include模块
from django.urls import path,include
此时在浏览器地址栏输入-------/polls/ 路由就会转至同目录下的pools里的urls.py进行路由
何时使用 include()
当包括其它 URL 模式时应该总是使用
include()
,admin.site.urls
是唯一例外。