Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python/Django不附加斜杠_Python_Regex_Django - Fatal编程技术网

Python/Django不附加斜杠

Python/Django不附加斜杠,python,regex,django,Python,Regex,Django,出于某些原因,Django没有在包含数字字符的变量末尾追加斜杠: test_A——有效(转到test_A/) test_1--not(不在末尾附加/-给我一个404) 我确实安装了中间件并附加了_SLASH=True 有什么想法吗?谢谢 url.conf: from django.conf.urls import patterns, url from dashboard import views urlpatterns = patterns('', url(r'^$', views.i

出于某些原因,Django没有在包含数字字符的变量末尾追加斜杠:

test_A——有效(转到test_A/)
test_1--not(不在末尾附加/-给我一个404)

我确实安装了中间件并附加了_SLASH=True

有什么想法吗?谢谢

url.conf:

from django.conf.urls import patterns, url
from dashboard import views

urlpatterns = patterns('',
    url(r'^$', views.index, name='index'),
    url(r'^environment/(?P<environment_name_url>\w+)/$', views.environment, name='environment'),)
views.py:

def environment(request, environment_name_url):
    environment_name = environment_name_url.replace('_', ' ')
    context_dict = {'environment_name': environment_name}
    try:
        environment = Environment.objects.get(name=environment_name)
        pages = Page.objects.filter(environment=environment)
        context_dict['pages'] = pages
        context_dict['environment'] = environment
    except Environment.DoesNotExist:
        pass
    return render(request, 'dashboard/environment.html', context_dict)
错误:

Using the URLconf defined in dashboard_project.urls, Django tried these URL patterns, in this order:

    1. ^admin/
    2. ^dashboard/ ^$ [name='index']
    3. ^dashboard/ ^environment/(?P<environment_name_url>\w+)/$ [name='environment']
    4. media/(?P<path>.*)

The current URL, dashboard/environment/test_1, didn't match any of these.
Django使用dashboard_project.URL中定义的URLconf,按以下顺序尝试了这些URL模式: 1. ^管理员/ 2. ^仪表板/^$[name='index'] 3. ^仪表板/^environment/(?P\w+/$[name='environment'] 4.媒体/(第页*) 当前URL dashboard/environment/test_1与其中任何一个都不匹配。
您必须扩展正则表达式。问题不在于没有附加斜杠,问题在于没有一个URL匹配(带斜杠或不带斜杠)

简单的解决方案,要包含点,您应该更新正则表达式,以便也允许点:
url(r'^environment/(?P[\w\.]-)/$,views.environment,name='environment'),)

您可以进一步改进它,以允许短跑:
url(r'^environment/(?P[\w\.-]+)/$,views.environment,name='environment'),)


后者甚至允许/test-1.1_10/

什么是
test_1
test_A
?你说“不行”是什么意思?您的输出是什么?它们是环境。。。测试A正确重定向到测试A/。。。test_1没有附加尾部斜杠,所以我得到一个404注释,我已经尝试添加了?收件人:url(r'^environment/(?P\w+//$)但我仍然得到相同的结果问题不在
url()中
part。添加数字或字母字符不会改变给定正则表达式的行为。我确实在你的views.py代码段中看到一个错误/不完整的代码部分。你只启动了try-except块,但是缺少了'except'。你能添加缺少的代码吗?就是这样!!现在可以很好地工作了!非常感谢!!
Using the URLconf defined in dashboard_project.urls, Django tried these URL patterns, in this order:

    1. ^admin/
    2. ^dashboard/ ^$ [name='index']
    3. ^dashboard/ ^environment/(?P<environment_name_url>\w+)/$ [name='environment']
    4. media/(?P<path>.*)

The current URL, dashboard/environment/test_1, didn't match any of these.