1、静态路由
urlpatterns属性
urlpatterns是路由文件中的一个全局变量,用来存放路由及视图函数的映射关系
用户发起的请求URL
都会首先进入主控制目录下的这个urls.py
文件中进行查找匹配
-
首先找到
urls.py
下的urlpatterns
全局变量,这是一个路由规则实例的列表数据。 -
按照先后定义顺序,进行路由匹配。
-
找到第一个匹配项时停止匹配,执行匹配到的视图函数。
-
遍历完全,未发现匹配,
django
进行异常处理
其中urlpatterns
中的每一个路由映射规则可以由path
或re_path
进行构造
注意:Django
的路由不考虑HTTP
请求方式,仅根据URL进行路由;即,只要URL
相同,无论POST
、GET
等哪种请求方式都指向同一个操作函数
path方法
path(str, view, kwargs=None, name=None) ''' str:一个匹配对应url地址的规则字符串 view:路由对应的视图函数,并且会自动封装HttpRequest作为第一个参数给这个视图函 kwargs:视图函数的关键字参数 name:该路由的全局命名,可以让我们方便的在django项目中任意部分显示的使用,相当于为url取变量名,接下来全局使用该命名值即可;当对应url路由改变之后,结合路由反向解析使用的地方不需要更改路由 '''
re_path
re_path(regex, view, kwargs=None, name=None) ''' regex:一个匹配对应url地址的规则字符串 view:路由对应的视图函数,并且会自动封装HttpRequest作为第一个参数给这个视图函 kwargs:视图函数的关键字参数 name:该路由的全局命名,可以让我们方便的在django项目中任意部分显示的使用,相当于为url取变量名,接下来全局使用该命名值即可;当对应url路由改变之后,结合路由反向解析使用的地方不需要更改路由 '''
案例
新闻 分类
1、新建django项目
使用pycharm创建项目
file---newProject
使用命令创建项目
django-admin startproject projectname
2、 新建app
python manage.py startapp app01
3、 配置settings.py,在settings.py中配置app,切换语言和时区,切换数据库为mysql,
INSTALLED_APPS = [ ... 'app01.apps.App01Config', ] LANGUAGE_CODE = 'zh-hans' # 语言 TIME_ZONE = 'Asia/Shanghai' # 时区 USE_TZ = False # 让修改的时区生效 # 配置数据库 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # 引擎,使用 mysql 'NAME': 'day04', # 数据库名称 'USER': 'root', # 数据库的登录用户名 'PASSWORD': 'root1234', # 数据库的登录的密码 'HOST': '127.0.0.1', # 数据库所在的主机 'PORT': 3306, # 数据库使用的端口号 } }
需要在settings.py所在的目录下init.py中,写入以下内容
import pymysql pymysql.install_as_MySQLdb()
4、 在后端进行跨域配置
什么是跨域问题?
指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器施加的安全限制。
所谓同源是指,域名,协议,端口均相同,只要有一个不同,就是跨域。
django后端跨域
-
安装django-cors-headers
pip install django-cors-headers # pip show 模块名, 查看某个模块是否安装过 pip show django-cors-headers
-
在settings.py下的INSTALLED_APPS中进行配置
INSTALLED_APPS = [ # 第三方包 'corsheaders', # 跨域 'app01.apps.App01Config', ]
-
在settings.py下的MIDDLEWARE中配置
MIDDLEWARE = [ 'django.contrib.sessions.middleware.SessionMiddleware', # 在这里进行配置跨域 , 在中间件第三行 'corsheaders.middleware.CorsMiddleware', 'django.middleware.common.CommonMiddleware', # 注释掉csrf这一行,第五行 # 'django.middleware.csrf.CsrfViewMiddleware', ]
-
在settings.py中添加变量,允许所有的 源访问
CORS_ALLOW_ALL_ORIGINS = True # 允许所有的源进行访问
5、 在主路由下配置app,做路由分发
from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('app01/', include('app01.urls')) ] # app01/urls.py from django.urls import path from . import views urlpatterns = [ ]
6、 在models.py中设计新闻分类表
from django.db import models # Create your models here. # 在models.py下每新建一个类,就代表在数据库新建一张表 class Cate(models.Model): # 类下面的属性,是表中字段 name = models.CharField(max_length=32) def __str__(self): return self.name
7、 生成迁移文件和执行迁移文件
python manage.py makemigrations python manag