Django 以编程方式更改 url

Django change url programmatically

我必须在我的 django 支持的网站中进行分页。 index.htmlbooks.html

我的第一页 books.html 有这个 link

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

这个在 books.html 中,用于返回第一页。

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

我的 url 配置文件是这样的

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')

当我点击第二个 link 回家时。我的 url 地址看起来像这样

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

如何在单击 books.html 中的第二个 link 时将 url 改回 mysite.com/

如果标题不合适,请见谅。我不知道我的问题标题是什么

更新

我已经从我的 url 模式中删除了 url(r'^index.html/$', 'mysite.views.home', name='home'),并在第二页中使用了 <a href="{% url 'home' %}">。但是当我点击 link

时没有任何反应

您缺少 ^:

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 模板标签 - 它会简化您在模板中的 URL 路由,让您远离这些类型的错误。

  1. 使用 Django 时不要写 <a href="anything.html">。您应该使用 url 模板标记作为页面地址。更多关于 url 模板标签的信息:https://docs.djangoproject.com/en/1.7/ref/templates/builtins/#url

示例:<a href="{% url 'home' %}">

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

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

其他回答遗漏的两个问题:

  1. 您在第三个 URL 中缺少一个 ^url(r'^index.html/$', 'azahra.views.home', name='home'),
  2. 您有两个 URL 具有相同的 name='home'。其中之一应该改变。

如前所述,您还应该使用 {% url 'url_name' %} template tags,而不是在模板中进行硬编码。

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