django-3.url配置

前言

我们在浏览器访问一个网页是通过url地址去访问的,django管理url配置是在urls.py文件。当一个页面数据很多时候,通过会有翻页的情况,那么页数是不固定的,如:page=1.
也就是url路径里面带参数时候如何去处理呢?

urls.py配置规则

由于django版本比较多,在查资料时候,也会看到不同的版本用不同写法,对于初学者来说是比较迷惑的,
总结了下,主要有三个:path、re_path、url,接下来具体分析下这三个有什么区别。

  • path 只能绝对匹配路径地址,不支持正则匹配
  • re_path 支持正则匹配,django 1.x版本常用
  • url 支持正则匹配,实际上就是return re_path, django2.x版本推荐
# helloworld/urls.py
from django.conf.urls import url
from django.urls import re_path, path
from hello import views

urlpatterns = [
    path("index/", views.index),
    re_path(‘^$‘, views.index),
    url(‘^demo/$‘, views.demo),
]

在浏览器上访问http://127.0.0.1:8000/index/, http://127.0.0.1:8000/, http://127.0.0.1:8000/demo/ 发现都能正确访问到对应内容。

打开path()和re_path()源码,就能看到path()的匹配规则是RoutePattern, re_pat()h匹配规则是RegexPattern

path = partial(_path, Pattern=RoutePattern)
re_path = partial(_path, Pattern=RegexPattern)

再打开url()对应的源码,实际上就是return re_path(),后续统一用url()就可以了。

def url(regex, view, kwargs=None, name=None):
    return re_path(regex, view, kwargs, name)

匹配路径统一在后面加个/,前面不用加/,如:index/、demo/、demo/page/

url是部分动态

当访问的页面有分页的情况,对应的页数就不能写死,如访问:http://127.0.0.1:8000/demo/page=1 ,那就不能这样写死了

url(‘^demo/page=1$‘, views.demo)

如果想匹配任意的页数,前面的部分demo/page=不变,匹配任意数字,可以用正则\d+匹配

url(‘^demo/page=\d+$‘, views.demo)

这样在浏览器上输入任意page页数都能访问一个固定地址,依然不是我们想要的结果,我们希望不同的页数,访问不同的地址,于是可以写个带参数的视图函数

hello/views.py文件写个带参数的视图函数,当输入的page=后面不是数字就抛个异常404

from django.shortcuts import render
from django.http import HttpResponse, Http404

# Create your views here.

def index(request):
    return HttpResponse("Hello world !  django ~~")

def demo(request):
    return render(request, ‘demo.html‘)

def page(request, num):
    try:
        num = int(num)
        return render(request, ‘demo.html‘)
    except:
        raise Http404

urls.py配置

from django.conf.urls import url
from django.urls import re_path, path
from hello import views
urlpatterns = [
    path("index/", views.index),
    re_path(‘^$‘, views.index),
    url(‘^demo/$‘, views.demo),
    url(‘^demo/page=(\d+)$‘, views.page),
]

接下来可以浏览器输入:http://127.0.0.1:8000/demo/page=222 ,能返回demo.html页面。
视图函数里面返回的是一个静态的demo.html模板页面,后面会讲模板参数化配置

404报错页面

如果输入的page不是数字,如:http://127.0.0.1:8000/demo/page=aa , 会出现报错页面:Page not found (404)

看到这种报错页面,因为Django设置文件setting.py里面有个参数 DEBUG = True,将其更改为False,Django将显示标准的404页面。

# SECURITY WARNING: don‘t run with debug turned on in production!
DEBUG = True

ALLOWED_HOSTS = []

由于处于开发阶段,DEBUG 默认为True,当开发完成正式发布产品上线时,需要将DEBUG = False

ALLOWED_HOSTS

ALLOWED_HOSTS是域名访问权限,设置可以访问的域名,默认值为空[], 只允许localhost或127.0.0.1在浏览器上访问。
DEBUG 改成False之后,需要重新启动服务,同时需要加个ALLOWED_HOSTS 地址,如果想让所以的域名都能访问,可以设置为:ALLOWED_HOSTS = ["*"]

# SECURITY WARNING: don‘t run with debug turned on in production!
DEBUG = False

ALLOWED_HOSTS = ["*"]

执行:>python manage.py runserver 重新启动后,出现404就是下面这种标准的了

django更多关于urls学习可以参考【https://docs.djangoproject.com/zh-hans/2.0/topics/http/urls/】

原文地址:https://www.cnblogs.com/jason89/p/10359372.html

时间: 2024-10-03 23:42:17

django-3.url配置的相关文章

django框架----django 模型 URL配置 视图函数

下载Django 创建一个项目 在命令行中,使用 cd 命令进入你想存储代码所在的目录,然后运行以下命令: django-admin.py startproject mysite   让我们来看看 startproject 都创建了些什么: mysite/ manage.py #一个实用的命令行工具,可让你以各种方式与该 Django 项目进行交互. mysite/ __init__.py settings.py #Django 项目的设置/配置 urls.py #Django 项目的 URL

Django中的 动态URL配置

举个例子,一家在线书店会为每一本书提供一个URL,如:/books/243/./books/81196/. 让我们创建第三个视图来显示当前时间和加上时间偏差量的时间,设计是这样的: /time/plus/1/ 显示当前时间+1个小时的页面 /time/plus/2/ 显示当前时间+2个小时的页面 /time/plus/3/ 显示当前时间+3个小时的页面,以此类推. 新手可能会考虑写不同的视图函数来处理每个时间偏差量,URL配置看起来就象这样: urlpatterns = patterns('',

Django -- 视图和URL配置

一个人行走的范围,就是他的世界:    -- 北岛<青灯> 一个人吟唱的语调,就是他的生活.    -- 小Q<小曲> ------------------------------------------------------------------------------------------------- 前一节我们建立了一个Django项目,这一节我们来了解视图和url的关系: [第一个视图 根目录] 当我们搭建好django时,urls.py内没有url,我们会看到一个

Django 1.8_视图和URL配置

前情提要 学习了如何创建django项目,运行开发django服务器,并了解了mvc模式. 内容 VIEW URL 正则表达式 错误解析与寻求帮助 hello world.html dynamic_date.html dynamic_date_offset.html Django处理请求的过程 Helloword 创建一网页,打开即显示helloworld. 其中网页内容由视图生成,并配置URL. 在mysite/mysites下创建views.py并编辑 1 from django.http

Django框架1——视图和URL配置

三个命令 1.创建一个django项目 在cmd中:django-admin.py startproject project_name D:\python\django_site>django-admin startproject first_site 2.创建应用 python manage.py startapp app_name D:\python\django_site\first_site>python manage.py startapp app001 3.运行django项目 p

python测试开发django-3.url配置

前言 我们在浏览器访问一个网页是通过url地址去访问的,django管理url配置是在urls.py文件.当一个页面数据很多时候,通过会有翻页的情况,那么页数是不固定的,如:page=1. 也就是url路径里面带参数时候如何去处理呢? urls.py配置规则 由于django版本比较多,在查资料时候,也会看到不同的版本用不同写法,对于初学者来说是比较迷惑的, 总结了下,主要有三个:path.re_path.url,接下来具体分析下这三个有什么区别. path 只能绝对匹配路径地址,不支持正则匹配

Django中的URL配置和模板

Django中的URL配置 : 实例: Python代码   urlpatterns = patterns('', # Example: # (r'^myweb/', include('myweb.foo.urls')), # Uncomment the admin/doc line below and add 'django.contrib.admindocs' # to INSTALLED_APPS to enable admin documentation: # (r'^admin/doc

Django:视图和URL配置

一.视图 1.在mysite文件夹下.创建views.py文件(文件名称没有特别的要求): from django.http import HttpResponse def hello(request): return HttpResponse("Hello world") 2.改动mysite文件夹下的urls.py文件: from django.conf.urls import url from django.contrib import admin from mysite.vie

Django——如何处理请求(URL配置和视图)

URLconfig—— 为了绑定视图函数和URL,我们使用URLconf. URLconf 就像是 Django 所支撑网站的目录. 它的本质是 URL 模式以及要为该 URL 模式调用的视图函数之间的映射表. 你就是以这种方式告诉 Django,对于这个 URL 调用这段代码,对于那个 URL 调用那段代码. 例如,当用户访问/foo/时,调用视图函数foo_view(),这个视图函数存在于Python模块文件view.py中. 当访问 URL /hello/ 时,Django 根据 ROOT