Django应用程序重定向所有URL

时间:2018-08-08 05:30:51

标签: django django-forms

我制作了一个非常简单的django应用程序,只是添加了一个表单(以及相关视图,urls.py中的条目等),但是无论我在地址栏中输入的URL是什么,它总是始终重定向到首页。

这是我的 urls.py

from django.conf.urls import url
from . import views

urlpatterns = [
    url('', views.index, name='index'),
    url('booking/new/', views.booking_new, name='booking_new'),
]

和我的 views.py

from __future__ import unicode_literals
from django.shortcuts import render
from django.http import HttpResponse
from django.template import loader
from .forms import BookingForm

def index(request):
    template = loader.get_template('/home/dave/dave/dave_site/home/templates/home/index.html')
    return HttpResponse(template.render({}, request))

def booking_new(request):
    form = BookingForm()
    return render(request, 'home/booking_edit.html', {'form': form})

当我尝试访问/ home / booking / new或/ booking / new时,我注意到它只是加载了我设置的默认主页。当输入任何URL时,即使是毫无意义的URL,它仍然会显示此网站,并且运行runserver到控制台的日志将以往的请求显示为HTTP 200 successful

我似乎没有设置catchall网址,所以不确定为什么会这样。

有什么问题,我该如何解决?

3 个答案:

答案 0 :(得分:2)

空字符串'' 是一种覆盖模式。您应该使其更加具体。

答案 1 :(得分:2)

Django url docs:

  

Django按顺序运行每个URL模式,并在与请求的URL匹配的第一个URL模式处停止。

在url.py中,将第一个网址更改为url(r'^$', views.index, name='index')

答案 2 :(得分:1)

这是因为''始终与每个网址匹配。您必须添加正则表达式或将其移至底部(但如果不匹配任何模式,它将显示您的索引页)

urlpatterns = [
    url('^$', views.index, name='index'),
    url('booking/new/', views.booking_new, name='booking_new'),
]

来自Django文档

  

Django按顺序运行每个URL模式,并在与请求的URL匹配的第一个URL模式处停止。

参考:https://docs.djangoproject.com/en/2.1/topics/http/urls/#how-django-processes-a-request