django中的网址和模板混淆

时间:2010-11-29 11:59:55

标签: python django

我的网址是:

1. http://localhost:8000/docs/[slug]
2. http://localhost:8000/docs/[slug]/login

1。在我要发送的号码2. url之前调用url slug In模板映射的函数的url 2.值 我应该为表格行动事件写些什么。

1 个答案:

答案 0 :(得分:1)

我同意,这几乎是不可理解的,但我会在答案方面试一试。

就调用序列而言,没有。用户可能首先访问网址2或网址1。您无法保证他们首先尝试访问哪个,因为他们可能会直接将URL输入到他们的浏览器中。您唯一能做的就是在request.session的dict中设置一个变量,并使用您的login网址对其进行测试。

在将slug传递给另一个网址方面,如果你有一个网址:

urls = ('',
url(r'docs/(?P<slug>\w+)', 'app.views.slug', name='slug-view'),
url(r'docs/(?P<slug>\w+)/login', 'app.views.slug_login', name='slug-login'),
#..
)

然后在你的模板中你可以这样做:

<form action="{% url slug-login slugname %}" method="POST">

你的views.py看起来像这样。

def slug(request, slug):
    #
    #

    return render_to_response('templatename.html', {'slugname':slug}, context_instance=RequestContext(request))

def slug_login(request, slug):
    # do something with slug.

这样,当你访问slug视图时,你将一个名为slugname的变量传递给模板,该模板使用django的url库来解析urls.py中一个特定名称的url,其中包含一个命名参数slug,它将指定slugname的值。

我建议你试试。

我也可能会重新阅读django url dispatcher。您使用没有命名参数的正则表达式是可以接受的,但实际上并非最佳实践。我还建议将django shortcuts (render_to_response)作为将变量传递到模板和django template language本身的快速方法。