1 路由的基本使用:
# url是个函数,有四个参数,第一个参数要传正则表达式,第二参数传函数内存地址,第三个参数传默认参数,第四个是路由的别名
url(r‘^liuqingzheng/article/aa.html$‘, views.test),
-路由从上往下匹配,一旦匹配成功,后面就不继续匹配了
2 路由的无名分组
url(r‘^test2/(\d+)/(\w+)$‘, views.test2),
无名分组分出几个值,视图函数就要接受几个值(位置参数形式传过来的)
3 路由的有名分组
url(r‘^test3/(?P<id>\d+)/(?P<name>\w+)$‘, views.test3),
有名分组分出几个值,视图函数就要接受几个值(按关键字传入,位置可以打乱)
4 有名和无名不能混着用
5 在settings中配置(以后项目,一般不用动)
# 默认是true,浏览器浏览的时候,默认加上斜杠
# 如果是False,浏览器默认不会加/
# APPEND_SLASH=False
6 路由分发
1 导入include
-from django.conf.urls import include
2 在主路由中:
url(r‘^app01/‘, include(‘app01.urls‘)),
url(r‘^app02/‘, include(‘app02.urls‘)),
3 在不同app中新建一个urls
from app01 import views
urlpatterns = [
url(r‘^test/‘, views.test),
]
4 如果浏览器输入app01/test/,就会响应到app01下views中的test取执行
7 反向解析:
干什么用?
-在视图函数中重定向的地址原来是写死的,如果url地址变更,我需要所有的url都修改,很麻烦,所有可以通过反向解析,获得url的地址
如何使用:
-路由层:
url(r‘^test_2/$‘, views.test2,name=‘test2‘),
-视图层:
from django.shortcuts import reverse
url=reverse(‘url地址的别名‘)
#如果做了分组
url=reverse(‘url地址的别名‘,args=[],kwargs={})
-模板层:
{% url ‘url地址的别名‘%}
#如果做了分组
{% url ‘url地址的别名‘ 参数1 参数2%}
8 名称空间
-路由分发时,可以指定名称空间:
-url(r‘^app01/‘, include(‘app01.urls‘,namespace=‘app01‘)),
-url(r‘^app02/‘, include(‘app02.urls‘,namespace=‘app02‘)),
-在视图中反向解析:
url=reverse(‘app01:test‘)
-在模板中反向解析:
{% url ‘app01:url地址的别名‘%}
-个人不建议这么使用:
在不同app的urls中起别名的时候,添加:app名_别名
9 django 2.0的path,re_path(了解)
-1.几的url就是2.几的re_path
-2.0的path 第一个参数不再是正则表达式
-5个转换器:int,str,slug,path,uuid
10 自定义转换器(了解):
-1 写一个类:
class MyCon:
regex = ‘[0-9]{4}‘
def to_python(self, value):
return int(value)
def to_url(self, value):
return ‘%04d‘ % value
-2 在urls中:
-from django.urls import register_converter
-register_converter(类名,‘别名‘)
-path(‘test/<别名:year>‘, views.test,name=‘year‘)
在使用Google搜索Django的SEO插件时,很多插件都没有更新到Python3.x,有的插件更新到了Python的高版本,但是不适用于Django的2.x。Django在升级到版本2.x的时候删除了很多类。
假设你已经创建好了一个Django项目和一个App,部分结构如下:要实现Django和ajax进行数据通信的大致原理如下:当我们点击这个button后,触发js代码,然后ajax会将必要信息包装好,即
遇到该问题的情境:在Django中采用Ajax提交表单。解决措施:在html页面中的表单内添加如下代码:在视图函数所在的py文件中添加如下代码:
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!