Django - 项目中的urls.py和应用中的url.py

0 投票
1 回答
1041 浏览
提问于 2025-04-18 15:33

我正在尝试让一个表单提交后跳转到另一个页面,不过我对Django框架不是很熟悉。我看过投票的教程。

我项目中的当前urls.py文件是:

from django.conf.urls import patterns, include, url
from django.contrib import admin
from WebApp import views
from StripCal import views
admin.autodiscover()

urlpatterns = patterns('',
    url(r'^admin/', include(admin.site.urls)),
    url(r'^webapp/', include('WebApp.urls', namespace="WebApp")),
    url(r'^stripcal/', include('StripCal.urls', namespace="StripCal")),
)

The url.py in my stripcal app is:

from django.conf.urls import patterns, include, url
from django.contrib import admin
from StripCal import views

urlpatterns = patterns('',
    url(r'^$', views.index, name='index'),
    url(r'^run', views.detail, name='detail'),
)

当我输入

http://127.0.0.1:8000/stripcal/
http://127.0.0.1:8000/webapp/

时,它成功地跳转到两个不同的应用。不过,我对{% url 'app_name:view_name' %}这种写法不太了解。看起来'app_name:view_name'会变成/app_name/view_name。

这是我现在的视图:

from django.shortcuts import get_object_or_404, render
from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse
from django.views import generic

# Create your views here.

def index(request):
    context = {'somethingDownByCelery': "heh"}
    return render(request, 'StripCal/index.html', context)

def detail(request):
    context = {'somethingDownByCelery': "heh"}
    return render(request, 'StripCal/detail.html', context)

我的Index.html文件

{% load staticfiles %}
<link rel="stylesheet" type="text/css" href="{% static 'StripCal/index.css' %}"/>

<form action="{% url 'stripcal:detail'%}" method="post">
    {% csrf_token %}
    <p> StripCal Input </p>
    <textarea name="StripCal_Input" cols="30" rows="10"> </textarea>
    <br> <br>
    <input type="submit" value="Submit">
</form>

我的Detail.html文件

{% load staticfiles %}
<link rel="stylesheet" type="text/css" href="{% static 'StripCal/detail.css' %}"/>

Hello Detail!

当我去掉action={% url 'stripcal:detail' %}时,网页可以正常加载,但一加上这个,页面就无法加载了(出现HTTP 500错误)。

1 个回答

1

试着去修改一下:
StripCal.url.py

urlpatterns = patterns('StripCal.views',
url(r'^$', 'index', name='index'),
url(r'^run','detail', name='detail'),

)

撰写回答