Python-Django-url路由及渲染模板

基本使用

项目目录及文件说明

image-20230428120951687

manage.py django中的一个命令行工具,管理django项目__init__.py空文件,告诉python这个目录是python包

setting.py 配置文件,包含数据库信息,调试标志,静态文件等

urls.py Django项目的URL声明

wsgi.py 部署服务器用到的

简单测试

  • 项目目录下新建views.py

  • from django.http import HttpResponse #响应前端页面对应的模块
    #视图函数
    def index(request):
        return HttpResponse('Hello World')
    
  • urls.py中开启

  • from django.contrib import admin
    from django.urls import path
    from . import views#同级目录下导入Views文件作为模块使用
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('index/', views.index),
    ]
    
  • image-20230428122942803

urls.py的作用

URL配置(URLconf)就像是Django所支撑网站的目录。它的本质是URL模式以及要为该URL模式调用的视图函数之间的映射表。以这样的方式告诉Django,对于那个URL调用那段代码。url的加载就是从配置文件中开始

url传参及参数限定

无参数限定

  1. views.py新建函数如下

  2. def names(request,name,age):
        return HttpResponse("名字:{},年龄:{}".format(name,age))
    
  3. urls中:

    urlpatterns = [
        path('admin/', admin.site.urls), path('inf/<name>/<age>',views.names)
    ]
    
  4. image-20230429132940030

  5. image-20230429133333291

转化器-参数限定

默认支持的转换器

str:匹配除了路径分隔符(/)之外的非空字符串,这是默认的形式

int:匹配正整数,包含0。

slug:匹配字母、数字以及横杠、下划线组成的字符串。

uuid:匹配格式化的uuid,如 075194d3-6885-417e-a8a8-6c931e272f00。

path:匹配任何非空字符串,包含了路径分隔符

  1. view.py

    def names2(request,name,age):
        return HttpResponse("名字:{},年龄:{}".format(name,age))
    
  2. urls.py

    urlpatterns = [
        path('admin/', admin.site.urls), path('inf2/<slug:name>/<int:age>',views.names2)
    ]
    
re_path正则匹配
  1. urls.py中导入模块

  2. from django.urls import path,re_path
    
  3. 格式

    urlpatterns = [
        path('admin/', admin.site.urls),
        re_path('^inf2/(?P<name>[A-z]{4,12})/(?P<age>[0-9][0-9])/$',views.names2)
    ]
    

    项目与应用app的关系

image-20230428123151718

新建APP

  1. ubuntu创建:python manage.py startapp +app名
  2. 注意(必须cddao到项目目录使用manage.py):image-20230428123900969

注册APP

主项目的settings.py里注册

image-20230429142028761

include的作用

image-20230429142807154

需要主项目里导入

from django.urls import path,include
urlpatterns = [
    path('admin/', admin.site.urls),   path('book/',include('book.urls'))
]

APP-views.py

from django.http import HttpResponse #响应前端页面对应的模块
def yq(requests):
    return HttpResponse("这是言情小说")

kwargs的作用

主urls.py文件

from django.contrib import admin

from django.urls import path,include

urlpatterns = [

path(‘admin/’, admin.site.urls),

path(‘book/’,include(‘book.urls’),{‘switch’:‘true’}),

]

#book-views.py文件
def yq(requests,**kwargs):
    return HttpResponse(f"这是言情小说{
      
      kwargs['switch']}")

name的作用

用作重定向

  • book-view.py

    from django.shortcuts import render,redirect,reverse#导入重定向需要的两个模块
    
  • book-urls.py

    urlpatterns = [
        path('yq/',views.yq),
        path('yq_new/',views.yq_new,name='yq_new')
    ]
    

模板渲染

  1. 主项目同级目录下新建templates(模板)目录用于存放各中模板

  2. 主项目-settings.py里导入

  3. import os
    
    BASE_DIR = Path(__file__).resolve().parent.parent #默认有的获取到总项目目录
    
  4. 在此处加入templates路径:

  5. image-20230429173130036

  6. 加载模块

    from django.template.loader import get_template#加载html模板文件的路径
    
  7. views.py下

    def yq(requests,**kwargs):
        reg = get_template('book_yq.html')
        html = reg.render()#渲染
        return HttpResponse(html)
        #或者直接return render(requests,'book_yq.html')
    

猜你喜欢

转载自blog.csdn.net/jiuwencj/article/details/130442400