Django框架学习5--urls.py配置规则

1.url配置规则:各个版本支持的不同

  • path 只能绝对匹配路径地址,不支持正则匹配
  • re_path 支持正则匹配,django 1.x版本常用
  • url 支持正则匹配,实际上就是return re_path, django2.x版本推荐

2.通过url获取参数

平常我们访问页面时经常有这样的url:http://127.0.0.1:8000/hello/page=1,

这样带参数的url需要我们获取到page后的参数,传递给视图函数进行处理。

url(r'^page=(\d+)$',views.page),
使用正则匹配页码数
def page(request,num):
    # return render(request, "222.html")
    # print(num,type(num))
    # if int(num)== 1:
    #     return render(request, "111.html")
    # else:
    #     return render(request, "222.html")
    try:
        num = int(num)
        if num == 1:
            return render(request, "111.html")
        else:
            return render(request, "222.html")
    except:
        raise Http404

参数接收到的是str类型,需要转换成对应的int 类型

如果url匹配规则为

url(r'^page=\d+$',views.page),此时视图函数page就接收不到 num参数了,不论page值为多少,都不能实现动态访问

如果page函数中仍然接收了参数就会报服务器错误

加上括号后表示此参数会传递给视图函数。

Django设置文件setting.py里面有个参数 DEBUG = True,表示debug模式,如果不修改为False界面显示的将是

修改为False后,显示正常的界面

ALLOWED_HOSTS是域名访问权限,设置可以访问的域名,默认值为空[], 只允许localhost或127.0.0.1在浏览器上访问

如果想让所有的域名都能访问,可以设置为:ALLOWED_HOSTS = ["*"]

或者在列表中指定能够访问的ip,仅指定的ip可访问。

注意:修改settings.py文件后需要重启服务器,才能使修改生效。

3.页面跳转,点击界面上的连接跳转到新的界面

home界面:


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>homepage</title>
</head>
<body>
<p>{{year}}----->>>>>{{month}}</p>
<a href="http://127.0.0.1:8000/mypage">点击跳转到我的界面</a>
</body>
</html>
def home(request, year, month):
    return render(request, "datetime.html", {"year": year, "month": month})

#传递参数到界面上

def my_page(request):
    return HttpResponse("这个是我的界面")
from django.conf.urls import url
from django.urls import path

# from hello import views
from hello import views
from . import view

urlpatterns = [
    url(r"^page/(?P<year>[0-9]{4})/(?P<month>[0-1][0-9])", view.home, name="date"),
    url(r'^mypage$', view.my_page),
]

url获取参数

 

注意:点击跳转到我的界面的标签中href如果只写 href='mypage',只是将原来的url中最后一个/后的内容替换为mypage,如果没有对应的url匹配就会报404错误。

4.匹配流程

urls.py本质上就是一个请求映射表,它决定了哪个请求由哪个函数来处理,具体过程如下:

1 浏览器发送请求url

2 服务端根据请求的url,在项目的所有应用(包括根目录)的urls.py配置文件中进行查找,如果能匹配到该url,就会将该url交给其对应的视图函数进行处理。

3 负责处理该url的视图函数,会搜集一些业务数据,然后把这些数据,通过 return render(request, '模板文件', 数据); 渲染到前端页面展示给用户
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,那么我们就来学习如何使用 Django 框架来编写一个网上书店。 首先,我们需要创建一个 Django 项目,可以使用以下命令: ``` django-admin startproject bookstore ``` 然后,我们需要创建一个 Django 应用,可以使用以下命令: ``` python manage.py startapp books ``` 接下来,我们可以定义模型来表示书籍的信息。在 books 应用的 models.py 文件中,可以定义如下模型: ```python from django.db import models class Book(models.Model): title = models.CharField(max_length=200) author = models.CharField(max_length=100) description = models.TextField() price = models.DecimalField(max_digits=5, decimal_places=2) ``` 上面的代码定义了一个 Book 模型,包含书籍的标题、作者、描述和价格等信息。 接着,我们需要创建数据库表,可以使用以下命令: ``` python manage.py makemigrations python manage.py migrate ``` 然后,我们可以创建视图来处理 HTTP 请求。在 books 应用的 views.py 文件中,可以定义如下视图: ```python from django.shortcuts import render from .models import Book def index(request): books = Book.objects.all() return render(request, 'books/index.html', {'books': books}) ``` 上面的代码定义了一个 index 视图,它获取所有书籍的信息,并将其传递给模板进行渲染。 接下来,我们需要创建模板来呈现书籍的信息。在 books 应用的 templates/books 目录下,可以创建一个 index.html 文件,包含如下代码: ```html {% for book in books %} <h2>{{ book.title }}</h2> <p>{{ book.author }}</p> <p>{{ book.description }}</p> <p>{{ book.price }}</p> {% endfor %} ``` 最后,我们需要将视图和 URL 映射起来。在 bookstore 项目的 urls.py 文件中,可以定义如下 URL 映射: ```python from django.urls import path from books.views import index urlpatterns = [ path('', index, name='index'), ] ``` 上面的代码定义了一个 URL 映射,将根路径映射到 index 视图。 现在,我们已经完成了一个简单的网上书店应用。可以使用以下命令启动 Django 开发服务器: ``` python manage.py runserver ``` 然后,打开浏览器,访问 http://127.0.0.1:8000/,即可查看所有书籍的信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值