无法获取要呈现的页面。姜戈
Can't get page to render. Django
很奇怪。我知道 url 正在寻找视图,但它不会呈现 page/or 任何东西...比如打印 HttpResponse。我迷失了故障排除。对我来说似乎一切都是相连的,但不知何故不是?如果您需要任何其他信息,请告诉我。
urls.py(项目)
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url('', include('login_app.urls', namespace = "login_app")),
url(r'^CMIRS/', include('submit_app.urls', namespace = "submit_app")),
]
urls.py (submit_app)
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'submit/$', views.submit, name ="submitView"),
]
welcome.html (login_app)
{% extends "base.html" %}
{% block content %}
{% load staticfiles %} <!-- static files have to be loaded inside block content -->
<link rel="stylesheet" type="text/css" href="{% static 'login_app/css/welcome.css' %}" />
<div class="row">
<a href="{% url 'submit_app:submitView' %}">
<div class="col-sm-4 vcenter" style="text-align: center">
<h1><i class="fa fa-pencil fa-3x"></i></h1>
<h3>Report an Incident</h3>
<p></p>
</div>
</a>
</div>
{% endblock %}
views.py (submit_app)
from submit_app.forms import IncidentForm
from django.shortcuts import render
from django.contrib.auth.decorators import login_required
from django.http import HttpResponse
#@login_required(login_url='/login/')
def submit(request):
print ("made it")
template = 'submit_app/submit.html'
form = IncidentForm()
context = {'form': form}
#return render(request, template, context)
return HttpResponse("view is working")
============================================= ======================
这些都是在 #@login_required(login_url='/login/')
注释掉的情况下完成的。
在你的urls.py(项目)中,做一点改动,将''
替换为r'^login/'
:
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^login/', include('login_app.urls', namespace = "login_app")),
url(r'^CMIRS/', include('submit_app.urls', namespace = "submit_app")),
]
当您使用模式 ''
时,所有内容都将与此匹配 url,您将永远无法获得想要的视图。
如您所见,/CMIRS/
和 /CMIRS/submit/
都指向登录页面 (welcome.html
)。我猜您想在用户未登录或未输入正确的 URL 时重定向用户。尝试在视图函数中进行重定向。
我查看了 Django 中 urlresovlers.py
的源代码,它使用 python 中的 re
模块来进行正则表达式匹配工作。这里我们可以试一试:
>>> import re
>>> re.match('', 'abc')
<_sre.SRE_Match object at 0x10bc46e68>
>>>
返回的匹配对象意味着 'abc'
被视为 ''
的匹配项。因此,当您在 url 模式的开头放置 ''
时,所有内容都将 "matched" 与空字符串一起传递给其他人。
很奇怪。我知道 url 正在寻找视图,但它不会呈现 page/or 任何东西...比如打印 HttpResponse。我迷失了故障排除。对我来说似乎一切都是相连的,但不知何故不是?如果您需要任何其他信息,请告诉我。
urls.py(项目)
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url('', include('login_app.urls', namespace = "login_app")),
url(r'^CMIRS/', include('submit_app.urls', namespace = "submit_app")),
]
urls.py (submit_app)
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'submit/$', views.submit, name ="submitView"),
]
welcome.html (login_app)
{% extends "base.html" %}
{% block content %}
{% load staticfiles %} <!-- static files have to be loaded inside block content -->
<link rel="stylesheet" type="text/css" href="{% static 'login_app/css/welcome.css' %}" />
<div class="row">
<a href="{% url 'submit_app:submitView' %}">
<div class="col-sm-4 vcenter" style="text-align: center">
<h1><i class="fa fa-pencil fa-3x"></i></h1>
<h3>Report an Incident</h3>
<p></p>
</div>
</a>
</div>
{% endblock %}
views.py (submit_app)
from submit_app.forms import IncidentForm
from django.shortcuts import render
from django.contrib.auth.decorators import login_required
from django.http import HttpResponse
#@login_required(login_url='/login/')
def submit(request):
print ("made it")
template = 'submit_app/submit.html'
form = IncidentForm()
context = {'form': form}
#return render(request, template, context)
return HttpResponse("view is working")
============================================= ======================
这些都是在 #@login_required(login_url='/login/')
注释掉的情况下完成的。
在你的urls.py(项目)中,做一点改动,将''
替换为r'^login/'
:
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^login/', include('login_app.urls', namespace = "login_app")),
url(r'^CMIRS/', include('submit_app.urls', namespace = "submit_app")),
]
当您使用模式 ''
时,所有内容都将与此匹配 url,您将永远无法获得想要的视图。
如您所见,/CMIRS/
和 /CMIRS/submit/
都指向登录页面 (welcome.html
)。我猜您想在用户未登录或未输入正确的 URL 时重定向用户。尝试在视图函数中进行重定向。
我查看了 Django 中 urlresovlers.py
的源代码,它使用 python 中的 re
模块来进行正则表达式匹配工作。这里我们可以试一试:
>>> import re
>>> re.match('', 'abc')
<_sre.SRE_Match object at 0x10bc46e68>
>>>
返回的匹配对象意味着 'abc'
被视为 ''
的匹配项。因此,当您在 url 模式的开头放置 ''
时,所有内容都将 "matched" 与空字符串一起传递给其他人。