python路由正则表达式

Posted

技术标签:

【中文标题】python路由正则表达式【英文标题】:python routing regex 【发布时间】:2019-01-01 10:00:02 【问题描述】:

我正在为urls.py 苦苦挣扎。

错误:

[pylint] E0602:未定义变量“模式”

在代码中:

from django.conf.urls import *
from django.contrib import admin

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'mysite.views.home', name='home'),
    # url(r'^blog/', include('blog.urls')),
    url(r'^$', 'notes.views.home', name='home'),
    url(r'^admin/', include(admin.site.urls)),
)

我正在关注链接上的教程:Django Tutorial: Building a note taking app

问题2。

教程中的同样问题:Simple Django Web Application Tutorial

from django.conf.urls import url, include
from django.contrib import admin

urlpatterns = [
    url(r'\^admin/', admin.site.urls),
    url(r'\^myrestaurants/', include('myrestaurants.urls', namespace='myrestaurants')),
]

【问题讨论】:

你使用的是哪个版本的 Django? 这些答案可能对您有所帮助:***.com/questions/38744285/… @cezar 版本 2.0.7 【参考方案1】:

您正在学习 Django 1.7 的教程,但您自己使用的是 Django 2.0.7。 Django 2 不向后兼容旧版本,这可能会导致陷阱。

我强烈建议您按照当前版本的教程进行操作。官方文档有一个很好的tutorial。

除非您的任务是维护一个遗留的 Django 项目,否则您不需要知道在过去的版本中事情是如何完成的。从当前版本开始,即现在的 Django 2,并了解必须如何完成这些事情。这是我的观点,最终可能会与其他开发者的信念发生冲突。

您所面临的问题可以通过一些调整来解决。首先是一行:

from django.conf.urls import *

无论您使用的是什么 Django 或 Python 版本,这都是一种不好的做法。

明确导入您需要的模块。在路由方面,Django 2 的方法略有不同。虽然您仍然可以使用url,但新方法是使用pathurlpatterns 应该是包含 path 对象的 list

正确的导入应该是:

from django.urls import path, include

您的urlpatterns 应如下所示:

urlpatterns = [
    path('', 'notes.views.home', name='home'),
    path('admin/', include(admin.site.urls)),
]

更好的方法是在您的应用中定义 urls.py 并将其包含在项目目录的主 urls.py 中:

urlpatterns = [
    path('myrestaurants/', include('myrestaurants.urls', namespace='mysrestaurants'),
    path('admin/', include(admin.site.urls)),
]

【讨论】:

【参考方案2】:

从 1.10 开始已弃用:

urlpatterns = patterns('')

所以请确保您使用的是兼容版本的 Django。

【讨论】:

以上是关于python路由正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

Python中的正则表达式

Python 正则表达式

thinkphp 正则路由

djanjo路由匹配规则

python 之 Django框架(路由系统include命名URL和URL反向解析命名空间模式)

Laravel 4.2 正则表达式路由约束,失败