Django框架(7.Django中视图,url的配置)

视图

   在Django中,通过浏览器去请求一个页面时,使用视图函数来处理这个请求的,

  视图函数处理之后,要给浏览器返回页面内容

视图函数的使用

1.定义视图函数

  视图函数定义在views.py

  视图的必须有一个参数,一般叫request,视图必须返回HttpResponse对象,HttpResponse中的参数内容会显示在浏览器 的页面上。

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


# Create your views here.
# 1. 定义视图函数,返回HttpRequest对象
# 2. 进行url配置,建立url地址和视图的对应关系
def index(request):
    # 进行处理,和M和T进行交互...
    return HttpResponse("这是网页的进行响应")

 2.进行url的配置     

  ( 目的建立地址根处理函数之间对应的关系)

   一条URLconf包括url规则、视图两部分:

  • url规则使用正则表达式定义。
  • 视图就是在views.py中定义的视图函数。

需要两步完成URLconf配置:

  • 1.在应用中定义URLconf
  • 2.包含到项目的URLconf中

     ① 应用下面新建一个urls.py ,进行配置 注意列表名别写错了;

from django.conf.urls import url
from booktest import views

# 项目的urls文件
from django.urls import re_path

'''通过re_path函数设置url路由的配置项
        正则匹配的是视图函数
    如果路由里面没有正则,则用  path
    '''
urlpatterns = [
    re_path(r'^index$', views.index),  # 建立/index和视图index之间的关系
]

   ②在项目的文件夹下有urls.py 文件,进行设置路由的配置项,为urlpatterns列表增加项

from django.contrib import admin
from django.urls import path, include, re_path


# 项目的urls文件
'''通过re_path函数设置url路由的配置项
   包含booktest应用中的urls文件
   路由里面没有正则的话就用 path函数
   '''
urlpatterns = [
    path('admin/', admin.site.urls),
    re_path(r'^', include('booktest.urls'))
]

3.请求访问   

   运行程序,访问地址   127.0.0.1:8000/index, 就有视图函数返回的字符串

   Django框架(7.Django中视图,url的配置)_第1张图片

路由请求的大概过程  

  请求者在浏览器地址栏中输入url,请求到网站后,获取url信息

   然后与编写好的URLconf逐条匹配,如果匹配成功则调用对应的视图函数,

  如果所有的URLconf都没有匹配成功,则返回404错误。

 例如还有在一个应用中还有其他的视图函数

def index2(request):
    # 第二个视图函数
    return HttpResponse("这是第二个试图函数的响应")

   直接在应用的urls.py的路由配置项里面进行添加(前提是这个应用的views.py在整个项目里面已经进行了配置)

   注意:$的运用   严格匹配开头结尾, 如果不加的话,访问index2的话就会访问第一个index路由

from booktest import views

# 项目的urls文件
from django.urls import re_path

'''通过re_path函数设置url路由的配置项
        正则匹配的是视图函数
    如果路由里面没有正则,则用  path
    '''
urlpatterns = [
    re_path(r'^index$', views.index),  # 建立/index和视图index之间的关系
    re_path(r'^index2$', views.index2)
]

 还有,如果进行路由设计的时候,地址的最后面有斜杠,那么在进行路由配置的时候就要加上 

你可能感兴趣的:(Django,Django框架)