【问题标题】:Django change url programmaticallyDjango以编程方式更改网址
【发布时间】:2015-05-18 21:59:57
【问题描述】:

我必须在我的 django 驱动的网站上翻页。 index.htmlbooks.html

我的第一页中有这个指向books.html 的链接

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

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

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

我的 url conf 是这样的

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

当我点击第二个链接回家时。我的url地址是这样的

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

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

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

更新

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

【问题讨论】:

  • 示例中是否引用了视图mysite.views?或azahra.views?
  • @Brandon 对不起。它的网站。我的错。
  • 帮助我理解为什么你希望/需要index.html 指向主视图而不是/
  • @Brandon 因为/href 中使用时不起作用
  • 我认为如果/ 无法让您回到站点根目录,则存在更大的错误。这应该没问题。

标签: python django urlconf


【解决方案1】:
  1. 对于 Django,不要写 &lt;a href="anything.html"&gt;。您应该使用url 模板标签作为页面地址。更多关于url的模板标签在这里:https://docs.djangoproject.com/en/1.7/ref/templates/builtins/#url

示例:&lt;a href="{% url 'home' %}"&gt;

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

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

【讨论】:

  • 但是当我使用&lt;a href="{% url 'home' %}"&gt;时没有任何反应
  • 这很可能是因为有两个名为“home”的模式
  • 但它在我的 urlconf 中。不是吗?
  • 问题出在我的js 代码中。当我在测试&lt;a&gt; 标记中尝试它时它可以工作。谢谢
【解决方案2】:

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

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

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

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

【讨论】:

  • 我已经从我的网址格式中删除了url(r'^index.html/$', 'azahra.views.home', name='home'),,并在第二页中使用了&lt;a href="{% url 'home' %}"&gt;。但什么也没发生
  • 什么都没有发生?你有错误吗?
  • 没有。没有错误。就像你根本不点击一样!
  • 你真的有一个叫mysite的应用吗?
  • 问题出在我的js 代码中。当我在测试&lt;a&gt; 标记中尝试它时它可以工作。谢谢
【解决方案3】:

您缺少^

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 路由并让您远离这些类型的错误。

【讨论】:

  • 抛出`页面未找到(404)`
猜你喜欢
  • 2012-11-22
  • 2023-03-27
  • 2019-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-12
  • 2012-07-07
  • 1970-01-01
相关资源
最近更新 更多