惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
The GitHub Blog
The GitHub Blog
J
Java Code Geeks
Engineering at Meta
Engineering at Meta
N
Netflix TechBlog - Medium
A
About on SuperTechFans
博客园 - 三生石上(FineUI控件)
罗磊的独立博客
MongoDB | Blog
MongoDB | Blog
B
Blog RSS Feed
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
有赞技术团队
有赞技术团队
T
Tailwind CSS Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
Vercel News
Vercel News
腾讯CDC
博客园 - 聂微东
The Cloudflare Blog
F
Fortinet All Blogs
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
Visual Studio Blog
Last Week in AI
Last Week in AI
B
Blog

噜啦 - python

使用Python 在WordPress 自动发布文章 xmlrpc 404 Not Found 错误 cPanel面板 使用Python 在WordPress 自动发布文章 xmlrpc 404 Not Found 错误 cPanel面板 django DTL 模板 - 噜啦 django DTL 模板 - 噜啦 url命名 应用(app)命名空间 实例命名空间 - 噜啦 Python django 安装 创建项目 运行 Python django 安装 创建项目 运行 Centos6 安装Python2.7.6 - 噜啦 Centos6 安装Python2.7.6 - 噜啦
url命名 应用(app)命名空间 实例命名空间 - 噜啦
博主: 噜啦 · 2019-11-30 · via 噜啦 - python
  • 发布时间:
  • 1739 次浏览
  • 1767字数
  • 分类: Django
  1. 首页
  2. 正文  

为什么需要url命名?

因为url是经常变化的。如果在代码中写死可能会经常改代码。给url取个名字,以后使用url的时候就使用他的名字进行反转就可以了,就不需要写死url了。

如何给一个url指定名称?

path函数中,传递一个name参数就可以指定。示例代码如下:

urlpatterns = [
    path('',views.index,name='index'),
    path('login/',views.login,name='login')
]

应用命名空间:

在多个app之间,有可能产生同名的url。这时候为了避免反转url的时候产生混淆,可以使用应用命名空间,来做区分。定义应用命名空间非常简单,只要在appurls.py中定义一个叫做app_name的变量,来指定这个应用的命名空间即可。示例代码如下:

# 应用命名空间
app_name = 'front'

urlpatterns = [
    path('',views.index,name='index'),
    path('login/',views.login,name='login')
]

以后在做反转的时候就可以使用应用命名空间:url名称的方式进行反转。示例代码如下:

login_url = reverse('front:login')

应用(app)命名空间和实例命名空间:

一个app,可以创建多个实例。可以使用多个url映射同一个app。所以这就会产生一个问题。以后在做反转的时候,如果使用应用命名空间,那么就会发生混淆。为了避免这个问题。我们可以使用实例命名空间。实例命名空间也是非常简单,只要在include函数中传递一个namespace变量即可。示例代码如下:

urlpatterns = [
    path('',include('front.urls')),
    # 同一个app下有两个实例
    path('cms1/',include('cms.urls',namespace='cms1')),
    path('cms2/',include('cms.urls',namespace='cms2')),
]

以后在做反转的时候,就可以根据实例命名空间来指定具体的url。示例代码如下:

def index(request):
    username = request.GET.get("username")
    if username:
        return HttpResponse('CMS首页')
    else:
        # 获取当前的命名空间
        current_namespace = request.resolver_match.namespace
        return redirect(reverse("%s:login"%current_namespace))

django_File

url_name_demo.zip

赞赏作者

如果觉得我的文章对你有用,请随意赞赏

url命名 应用(app)命名空间 实例命名空间

 •