Django 以编程方式更改 url
Django change url programmatically
我必须在我的 django 支持的网站中进行分页。 index.html
和 books.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 路由,让您远离这些类型的错误。
- 使用 Django 时不要写
<a href="anything.html">
。您应该使用 url
模板标记作为页面地址。更多关于 url
模板标签的信息:https://docs.djangoproject.com/en/1.7/ref/templates/builtins/#url
示例:<a href="{% url 'home' %}">
在您的 urls.py 中,您有 ^books.html/$
和 index.html/$
。注意到索引前缺少的 ^
了吗?您可能想要添加它。
不要对 urls.py 中的不同模式使用相同的名称。
其他回答遗漏的两个问题:
- 您在第三个 URL 中缺少一个
^
:url(r'^index.html/$', 'azahra.views.home', name='home'),
- 您有两个 URL 具有相同的
name='home'
。其中之一应该改变。
如前所述,您还应该使用 {% url 'url_name' %}
template tags,而不是在模板中进行硬编码。
此外,除非您的应用程序实际命名为 mysite
,否则您需要更改它以引用您的实际视图...
我必须在我的 django 支持的网站中进行分页。 index.html
和 books.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 路由,让您远离这些类型的错误。
- 使用 Django 时不要写
<a href="anything.html">
。您应该使用url
模板标记作为页面地址。更多关于url
模板标签的信息:https://docs.djangoproject.com/en/1.7/ref/templates/builtins/#url
示例:<a href="{% url 'home' %}">
在您的 urls.py 中,您有
^books.html/$
和index.html/$
。注意到索引前缺少的^
了吗?您可能想要添加它。不要对 urls.py 中的不同模式使用相同的名称。
其他回答遗漏的两个问题:
- 您在第三个 URL 中缺少一个
^
:url(r'^index.html/$', 'azahra.views.home', name='home'),
- 您有两个 URL 具有相同的
name='home'
。其中之一应该改变。
如前所述,您还应该使用 {% url 'url_name' %}
template tags,而不是在模板中进行硬编码。
此外,除非您的应用程序实际命名为 mysite
,否则您需要更改它以引用您的实际视图...