Django url path
Django 路由在 urls.py 配置
path('浏览器地址栏表示URL', '处理方法', '路由别名')
path('app1/screen001/list', screen001_view.list, name='list')
注意:同一app下 name 定义不能重名,若重名,后者会覆盖前者
不同app下可以重名,调用方法:指定app名称 {% url "app名称:路由别名"%}
※Django version 4.0.3
project :
代码语言:javascript复制pj
├── app1
│ │ urls.py
│ │ screen001_views.py
│ │ screen002_views.py
│ └── ...
│
├── app2
│ │ urls.py
│ │ screen003_views.py
│ └── ...
│
├── pj
│ │ settings.py
│ │ urls.py
│ └── ...
│
└── templates
└──app1
│ │ screen001.html
│ │ screen002.html
│ └── ...
└──app2
│ screen003.html
└── ...
url.py 路由别名
代码语言:python代码运行次数:0复制pj>url.py
from django.urls import path
from django.conf.urls import include
from .views import example_view
urlpatterns = [
path('', include('core.urls')),
path('app1/', include('app1.urls')),
path('app2/', include('app2.urls')),
]
代码语言:python代码运行次数:0复制app1>url.py
from django.urls import path
from .views import screen001_view, screen002_view
# 定义实例命名空间
app_name = 'app1'
urlpatterns = [
# 画面1
path('app1/screen001/list', screen001_view.list, name='list'), # 路由别名 list ⇒ s1_list
path('app1/screen001/search', screen001_view.search, name='search'),
# 画面2
path('app1/screen002/list', screen002_view.list, name='list'), # 路由别名 list ⇒ s2_list
]
路由别名【list】,若同一app下重名,调用后者【screen002_view.list】
但可以给同一个函数,定义不同的路由别名,以提供相同的函数给两个不同的群体
代码语言:python代码运行次数:0复制app2>url.py
from django.urls import path
from .views import screen003_view
# 定义实例命名空间
app_name = 'app2'
urlpatterns = [
# 画面3
path('app2/screen003/list', screen003_view.list, name='list'), # 路由别名 list ⇒ 不同app下可以重名
]
调用方法:
被指定的命名空间 URL 使用':'
操作符。
{% url "app名称:路由别名" %}
HTML(template)调用实例
代码语言:javascript复制<form action="{% url 'app1:app1_s1_list' %}" method="post">
代码语言:javascript复制window.open("{% url 'app1:app1_s1_search' %}?id=" row['id'], '_blank');
代码语言:javascript复制function delete_file(id){
$.ajax({
'url': '{% url "app1:app1_s1_list" %}',
'type': 'POST',
'data': JSON.stringify({id:id}),
'contentType': "application/json",
'dataType': 'json'
}).done(function (response) {
console.log("success");
}).fail(function(jqXHR, textStatus, errorThrown){
console.log("システムエラー[" textStatus "]" errorThrown);
});
注意:同一app下 name 定义不能重名,若重名,后者会覆盖前者
路由别名定义:
画面表示:log (后者被调用)
参考官方文档 URL调度器