无法获取要渲染的页面。 Django的

时间:2016-02-16 18:44:58

标签: python django render

很奇怪。我知道网址正在查找视图,但它不会呈现页面/或任何内容......就像打印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/')注释掉的情况下完成的。

just logged in just clicked Report Incident log

1 个答案:

答案 0 :(得分:1)

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")),  
]

当您使用模式''时,所有内容都将与此网址匹配,您将无法访问所需的视图。

如您所见,/CMIRS//CMIRS/submit/都定向到登录页面(welcome.html)。我想你想在用户没有登录或没有输入正确的URL时重定向用户。尝试在视图函数中进行重定向。

我已经检查了Django中urlresovlers.py的源代码,它在python中使用re模块来进行正则表达式匹配工作。在这里我们可以尝试一下:

>>> import re
>>> re.match('', 'abc')
<_sre.SRE_Match object at 0x10bc46e68>
>>> 

返回的匹配对象意味着'abc'被视为''的匹配项。因此,当您在url模式的开头放置''时,所有内容都将与空字符串“匹配”,然后再转移到其他字符串。