django外调用url_Django urls 配置 ,模版url调用

本文详细介绍了Django中URL的配置与调用方法。包括全局工程下的URL分发、APP下的URL映射、views.py中解析函数的编写,还提及网址末尾斜杠的设置、多app视图函数导入、url命名、命名空间,以及FBV和CBV的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

urls.py 配置方法

1、先配置全局工程下的 url 分发,通过不同的url 匹配规则,分发到不同的app (app可理解为不同的站点)

一般设置全局工程的 url.py 分发到 ----------->不同站点(app)下的 urls.py

from django.conf.urls import url,include #include 要新增

from django.contrib import admin

urlpatterns = [

url(r'^admin/', admin.site.urls), #系统默认

url(r'^android/',include('android.urls')), #新增分发到APP下的ulrs

]

2、配置APP下的 urls.py 映射 ,通过正则表达式,来分发对应的view.py下的函数

from django.conf.urls import url

from android.views import index,login,list,logout

urlpatterns = [

url(r'^index/',index),

url(r'^login/',login),

url(r'^list/(?P\d*)/',list), #推荐?P版型正则表达式规则,方便理解

url(r'^list/(?P\w*)/',list) \d* 0到多个数字,\w* 0到多个字母

url(r'^logout/',logout,name='logout'), #通过name 命名后,模版调用更加方便

]

3、在站点(app)下的 views.py 下,写出对应的解析函数,配置成功

from django.shortcuts import render

from django.http import HttpResponse

# Create your views here.

def index(request):

return HttpResponse('index')

def login(request):

return HttpResponse('index')

def list(request,name):

return HttpResponse('list')

4. 在CMD 下,进入mange.py目录,并运行 manage.py (内置服务器), 即可开启浏览器测试

python manage.py runserver

特别说明:

在django 中,浏览器的 网址 尾部 会默认加上 '/' 如:http:// www.baidu.com/

这是受配置文件 setting.py中APPEND_SLASH项控制的 ,默认为 True

如果不需要网址末尾加斜杠 '/' ,在setting.py中新增APPEND_SLASH=Flase即可

导入多个app 的视图函数:

如果导入多个app 的 视图函数,若遇到重名,则需要 as 转换

from django.conf.urls import url

from django.contrib import admin

from app01 import views

from session import views as session_views #用as 转换

urlpatterns = [

url(r'^admin/', admin.site.urls),

url(r'^index/(\w*)', views.index),

url(r'^login/$', session_views.login), #使用转换后的视图函数

url(r'^main/$', session_views.main),

url(r'^logout/$', session_views.logout),

]

url name

注意: url 配置 成 name ='xxx' ,可对 url 关系进行命名,以后根据此名称生成想要的url

如果url 太长,可以用此种方法

如 :urls.py  --  url(r'^asdasdasdadasdasdasdasd/',logout,name='logout')

html模版 :   

对应浏览器上的url 为: /asdasdasdadasdasdasdasd/3/

name 扩展

from django.urls import reverse   #可帮我们生成想要的url

urls.py

url(r'^asdfasdfasdf/', views.index, name='i1'), #规则1

url(r'^yug/(\d+)/(\d+)/', views.index, name='i2'),

url(r'^buy/(?P\d+)/(?P\d+)/', views.index, name='i3'),

views.py

from django.urls import reverse

def func(request, *args, **kwargs):

url1 = reverse('i1')                               # asdfasdfasdf/ 生成的url,根据规则1

url2 = reverse('i2', args=(1,2,))                 # yug/1/2/

url3 = reverse('i3', kwargs={'pid': 1, "nid": 9}) # buy/1/9/

html 模版

# xxx.html

{% url "i1" %}               # asdfasdfasdf/

{% url "i2" 1 2 %}           # yug/1/2/

{% url "i3" pid=1 nid=9 %}   # buy/1/9/

其他url调用

# 当前的URL

request.path_info

url 默认值

urls.py

url(r'^index/$', views.index {'name':root},

views.py

def index(request,name):

pass

urls命名空间

urls include分发 ,加name 加 namespace ,案例

1、主urls.py

from django.conf.urls import url,include #include 要新增

urlpatterns = [

url(r'^a/',include('app01.urls' ,namespace='author')),# namespace 命令空间

]

2、app01.urls

app_name = 'app01' #添加app_name = 'app01'

urlpatterns = [

url(r'^index/',views.index name='lee'),

]

3、view.py

from django.urls import reverse

def index(request):

v = reverse('author:lee')

print(v) #生成 的ulr 为 /a/index/

4、html 调用url

{% url 'author:lee'%}

FBV 和 CBV

FBV:  function base views 函数对应视图 ,上述博客内容 说明的都是函数对应视图

CBV: class vase views    类对应视图

CBV (类对应视图)使用方法:

views.py

from django.views import View #必须导入 View

class Home(View) #该类必须继承 View 类

def post(self,request): #post 请求放post 函数里面 ,self,request 必填

pass

def get(self,request): #get 请求放get 函数里面

pass

不同的请求可以放在不同的函数里面(get,post,put),是因为,定义的类继承了 View 类的 dispath() 方法

默认定义以下方法后,可以自动识别

['get', 'post', 'put', 'patch', 'delete', 'head', 'options', 'trace']

urls.py

from xxxapp import views

urlpatterns = [

url(r'^admin/', admin.site.urls),

url(r'^home/', views.Home.as_view()), #必须为 vews.xx类.as_view()

]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值