python_django urlpat

2020-01-13 12:54:41 浏览数 (1)

url相当于文件,include相当于目录

url(regex, view, kwargs=None, name=None, prefix= '' )

regex:要匹配的 url。

view:该 url 的处理函数,可以是一个表示函数位置的字符串, 也可以是一个函数的实例。

kwargs: 一个字典,表示传递多余的参数。

name : 为 url 进行命名。主要用于反向查找,实现一对一的映射

prefix : if prefix: view = prefix  ' . '  view 表示在 view 前加上前缀。基本不用

代码语言:javascript复制
 url(r'^(?P<pk>d )/$', views.DetailView.as_view(), name='detail',{'foo': 'bar'}),   
 (参数)或(?P<参数名>参数)        {额外参数--字典}

include(arg, namespace=None, app_name=None)

arg:接受一个字符串,表示被包含的模块在哪里

namespace : 实例命名空间

app_name : 应用命名空间,同一个应用的实例,应该用一样的名字

代码语言:javascript复制
url(r'^polls/', include('polls.urls', namespace='author-polls', app_name='polls')),
  • 应用命名空间 :
  • 它表示正在部署的应用的名称。 一个应用的每个实例具有相同的应用命名空间。 例如,可以预见Django 的管理站点的应用命名空间是 'admin'。
  • 实例命名空间 
  • 它表示应用的一个特定的实例 。 实例的命名空间在你的全部项目中应该是 唯一 的。 但是,一个实例的命名空间可以和应用的命名空间相同。它用于表示一个应用的默认实例。 例如,Django 管理站点实例具有一个默认的实例命名空间 'admin' 。

反查的方法,在模板中:

代码语言:javascript复制
{% for yearvar in year_list %}
<li><a href="{% url 'news-year-archive' yearvar %}">{{ yearvar }} 
Archive</a></li>
{% endfor %}                    # news-year-archive即为url的name

在基于类的视图的方法中:

代码语言:javascript复制
 return HttpResponseRedirect(reverse('news-year-archive', args=(year,)))



带名字的url

代码语言:javascript复制
url(r'^author-polls/', include('polls.urls', include('polls.urls')),
代码语言:javascript复制
app_name = 'polls'
url(r'^$', views.IndexView.as_view(), name='index'),

反向查找

In the method of a class-based view:

代码语言:javascript复制
reverse('polls:index', current_app=self.request.resolver_match.namespace)

and in the template:

代码语言:javascript复制
{% url 'polls:index' %}

还有url嵌套

感觉没啥子用....

0 人点赞