DjangoURL详解
对于高质量的Web 应用来说,使用简洁、优雅的URL 模式是一个非常值得重视的细节。
Django 如何处理一个请求
当一个用户请求Django 站点的一个页面,下面是Django 系统决定执行哪个Python 代码使用的算法:
Django 在 settings.py里面有
ROOT_URLCONF = 'youyu.urls'用于配置网站的整体根路由。Django读取python模块并寻找urlpatterns变量,urlpatterns变量由
django.urls.path() and/or django.urls.re_path()组成Django 依次匹配每个URL 模式,在与请求的URL 匹配的第一个模式停下来。
当url匹配到相应的模式,django将调用相应的view。View是一个简单的python函数。视图传递一下的参数:
一个HttpRequest实例
正则表达式参数
url 中的相应匹配参数,可以写入到view的参数列表中。
如果没有任何一个url匹配,django会返回一个异常。
Path converters
django提供一下类型的path转换符
str - 匹配任意的非空字符串。不包含'/'字符。 int - 匹配0个或者任意个整数,返回int类型 slug - 匹配任意的ASCII 字符和数字。中间空格添加 - 或者 _ uuid - 匹配UUID格式。 path - 匹配一个非空字符串,包括'/'分隔符。
slug更新
slug用于更友好的显示blog、单页或者文章后面的url连接。
第一步更新slug
将Article模型添加slug字段,然后在url中维护slug解析,最后添加slug_view
models.py
在Article中添加slug字段
urls.py
views.py
最后记得在admin.py中添加slug维护字段。
在页面使用slug访问遍可以访问到文章。这种模式已经可用了。但是这种模式需要我们手动的指定slug,对于维护文章的时候较复杂。
使用django-uuslug包可以自动的管理slug
django-uuslug
第一步安装django-uuslug , 使用pip install django-uuslug
然后在模型中修改默认的保存方法即可
将默认的slug替换即可。最后为了方便使用,可以将admin中的slug去除,由系统帮忙生成。
最后我们改掉页面上的连接到slug即可。
Last updated
Was this helpful?