Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Django 1.6视图中,我想转到非Django网页_Django_Url_Redirect - Fatal编程技术网

从Django 1.6视图中,我想转到非Django网页

从Django 1.6视图中,我想转到非Django网页,django,url,redirect,Django,Url,Redirect,我有一个显示大量数据的网页。该页面是使用Django 1.6、基于类的视图和模板创建的。当用户单击其中一个显示的数据元素时,将调用另一个视图。然后,该视图生成一个参数列表,这些参数通过URL参数传递给另一个非Django的网页,例如amamzon.com。有办法做到这一点吗?目前,我调用第二个页面,页面上有一个按钮,其中包含指向非Django页面的“href”。使用来自Django.shortcuts的重定向。to按原样传递给重定向响应的位置标头 从django.shortcuts导入重定向 定

我有一个显示大量数据的网页。该页面是使用Django 1.6、基于类的视图和模板创建的。当用户单击其中一个显示的数据元素时,将调用另一个视图。然后,该视图生成一个参数列表,这些参数通过URL参数传递给另一个非Django的网页,例如amamzon.com。有办法做到这一点吗?目前,我调用第二个页面,页面上有一个按钮,其中包含指向非Django页面的“href”。

使用来自Django.shortcuts的重定向。to按原样传递给重定向响应的位置标头

从django.shortcuts导入重定向 定义我的视图请求: 以某种方式构建我的url return redirectto=我的url 我最终:

创建了一个只包含此代码的模板。 在Views代码中,我添加了一个检查,看看我是应该在Django中使用标准模板,还是应该转到非Django网站。如果我想转到外部站点,我只需将类的模板名称更改为新模板并返回。 新模板将参数插入URL并重定向到网站。
希望这对将来的其他人有所帮助。或者,如果有人有更好的想法,请告诉我。

如果您在修改呈现数据的原始视图方面受到限制,那么您只需在特定视图中创建一个href,该视图可以从您要重定向用户的每个数据项计算新URL,然后重定向用户

在your views.py中:

然后,在模板中,对于要单击以进入重定向视图的任何项目,执行以下操作

<a href="{% url views.redirect_view args %}">Some data item</a>
或者,编写一个模板标记,获取数据并输出相应的URL以重定向到,然后将其放入标记中。e、 g

{% for item in items %}
   <a href="{% get_redirect_url item %}">{{ item }}</a>
{% endfor %}
这些方法只是将页面变成一堆链接,而不需要任何特定的重定向视图


另一种方法是使用JavaScript,但我认为在这些情况下没有必要这样做。

如果我使用重定向,它将通过我的url.py文件发送。但是我的目标URL没有在urls.py中定义,因为它不是我的项目/应用程序的一部分。在生成结果时,我当前覆盖了get_queryset和get_context_数据方法。正如您所描述的,我将重定向放在get_context_数据中,但它只是返回到我假设的默认页面,因为为类指定了模板名称。我尝试使用的重定向是这样的:return redirectto=我还发现这是可行的。我创建了一个模板,其中只有一个重定向。然后,视图代码选择此模板或列出结果的模板。我在IE 9.0、FF 34和Chrome上进行了测试。它很有效,但不是很有说服力。我刚刚看到了这篇文章。看起来它可能会起作用,但需要格式化整个网页才能重定向到别处。我觉得你好像做错了什么事。很抱歉,我没有时间实现ListView和check,你能告诉我你在做什么,比如用你在应用程序中的方式呈现用户的代码吗?如果它能让你满意,这是一个很好的解决方案。
from django.http import HttpResponseRedirect

def redirect_view(request, args):
    new_url = figure_out_url(args)
    return HttpResponseRedirect(new_url)
<a href="{% url views.redirect_view args %}">Some data item</a>
{% for item in items %}
    <a href="{{ item.url }}">{{ item }}</a>
{% endfor %}
{% for item in items %}
   <a href="{% get_redirect_url item %}">{{ item }}</a>
{% endfor %}