Django以编程方式更改url

时间:2015-03-16 17:03:40

标签: python django urlconf

我必须在我的django网站上登录。 index.htmlbooks.html

我在第一页中有books.html的链接

<a href="books.html">books</a>

这个用于books.html以便返回第一页。

<a href="index.html">Home</a>

我的网址就像这样

urlpatterns = patterns('',
    url(r'^$', 'mysite.views.home', name='home'),
    url(r'^books.html/$', 'mysite.views.bookpage', name='books'),
    url(r'index.html/$', 'mysite.views.home', name='home'),
)

views.py

def home(request):
        return render_to_response('index.html')

def bookpage(request):
        return render_to_response('books.html')

当我点击第二个链接回家。我的网址就像这样

mysite.com/books.html/index.html/

如果点击mysite.com/中的第二个链接,如何将网址更改回books.html

抱歉,如果标题不合适。我不知道我的问题标题是什么

更新

我已从我的网址格式中删除了url(r'^index.html/$', 'mysite.views.home', name='home'),并在第二页中使用了<a href="{% url 'home' %}">。但是当我点击该链接时没有任何反应

3 个答案:

答案 0 :(得分:3)

  1. Django不要写<a href="anything.html">。您应该使用url模板标记作为页面地址。有关url模板标记的更多信息,请访问:https://docs.djangoproject.com/en/1.7/ref/templates/builtins/#url
  2. 示例:<a href="{% url 'home' %}">

    1. 在您的urls.py中,您有^books.html/$index.html/$。注意索引之前缺少^?您可能想要添加它。

    2. 不要在urls.py中为不同的模式使用相同的名称。

答案 1 :(得分:3)

其他答案中遗漏了两个问题:

  1. 您在第三个网址中遗漏了^url(r'^index.html/$', 'azahra.views.home', name='home'),
  2. 您有两个具有相同name='home'的网址。其中一个应该改变。
  3. 如上所述,您还应该使用{% url 'url_name' %} template tags,而不是在模板中进行硬编码。

    此外,除非您的应用程序实际上名为mysite,否则您需要更改它以引用您的实际视图......

答案 2 :(得分:2)

您错过了^

urlpatterns = patterns('',
    url(r'^$', 'mysite.views.home', name='home'),
    url(r'^books.html/$', 'azahra.views.bookpage', name='books'),
    url(r'^index.html/$', 'azahra.views.home', name='home'),
)

查看url模板标记 - 它会简化模板中的网址路由,让您远离这些类型的错误。