gpt4 book ai didi

Django 从一个页面重定向到另一个页面

转载 作者:行者123 更新时间:2023-12-02 08:53:56 25 4
gpt4 key购买 nike

我正在 Django 中开发一个项目,在单击链接从一个页面重定向到另一个页面时遇到问题。无论我尝试了什么,我最终得到的网址如下:

本地主机:8080/page1/page2

而不是从localhost:8080/page1移动到localhost:8080/page2

我尝试使用HttpResponseRedirect(url)

最佳答案

推荐的方法是使用{% url 'url-name' arg1 arg2 kwarg='foo' %}在 Django 模板中。您不应在模板中对网址进行硬编码,而应使用网址名称。
更多详情:https://docs.djangoproject.com/en/1.9/ref/templates/builtins/#url

Python 代码中的等效项是 django.utls.reverse返回绝对 url 或 django.shortcuts.redirect相当于 HttpResponseRedirect(reverse('url_name'))
https://docs.djangoproject.com/en/1.10/ref/urlresolvers/#django.urls.reverse

编辑#1

使用数据库在 View 之间传递项目。

models.py

from django.db.models import Model

class Item(Model):
# your model fields

views.py

def list_view(request):
items = Item.objects.all()
context = {'items': items}
return render(request, 'list_template.html', context)

def details_view(request, item_id):
item = Item.objects.get(id=item_id)
context = {'item': item}
return render(request, 'details_template.html', context)

urls.py

urlpatterns = [
url(r'^/list/$', views.list_view, name='list')
url(r'^/details/(?P<item_id>[0-9]+)/$', views.details_view, name='details'),
]

list_template.html

<!-- your html -->
<ul>
{% for item in items %}
<li>
<a href="{% url 'details' item.id %}">item number {{ item.id }}</a>
</li>
{% endfor %}
</ul>
<!-- your html -->

{% url ... %}标签生成名为“details”的模式的绝对 url,并用函数参数替换部分地址。在地址中,而不是 (?P<item_id>[0-9]+) ,您将获得项目 ID,例如。 /details/1/ 。当您单击链接时,编号 1由正则表达式抓取并传递给函数参数,您可以在其中从数据库中获取您的项目。

关于Django 从一个页面重定向到另一个页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38829593/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com