Python 获取当前url

Python 获取当前url,python,django,url,dispatcher,Python,Django,Url,Dispatcher,我有几个视图呈现相同的模板,我有一些{%url%}标记到模板中,需要根据当前视图指向不同的位置。是否有任何上下文变量给出视图的名称(对于命名URL),如view-1 view-2,因此在我的模板中我可以这样使用它: {% url url-name %} 还可以将其他信息传递给模板,以便我了解调用哪个视图。但我想这不是一个优雅的解决方案。将RequestContext传递给模板呈现程序,并为自己编写一个上下文处理器,以根据请求重建url 将RequestContext传递给模板呈现程序,并编写一

我有几个视图呈现相同的模板,我有一些{%url%}标记到模板中,需要根据当前视图指向不同的位置。是否有任何上下文变量给出视图的名称(对于命名URL),如view-1 view-2,因此在我的模板中我可以这样使用它:

{% url url-name %}

还可以将其他信息传递给模板,以便我了解调用哪个视图。但我想这不是一个优雅的解决方案。

将RequestContext传递给模板呈现程序,并为自己编写一个上下文处理器,以根据请求重建url


将RequestContext传递给模板呈现程序,并编写一个上下文处理器,以根据请求重建url


我认为在django中没有任何直接方法可以查看当前模板呈现的视图。所以,它简化了,要么编写上下文处理器(将增加复杂性而不是降低复杂性),要么从视图发送信息

但是,与其将视图名称发送到模板并基于该视图创建其他位置,为什么不尝试从每个视图发送构造的url??决策逻辑在视图中比在django模板上更有效。只是一个建议


愉快的编码。

我认为在django中没有任何直接的方法来查看当前模板呈现的视图。所以,它简化了,要么编写上下文处理器(将增加复杂性而不是降低复杂性),要么从视图发送信息

但是,与其将视图名称发送到模板并基于该视图创建其他位置,为什么不尝试从每个视图发送构造的url??决策逻辑在视图中比在django模板上更有效。只是一个建议

快乐编码

还可以将其他信息传递给模板,以便我能够理解 视图被称为。但我想这不是一个优雅的解决方案

当然是。下面是一个例子:

def view1(request, form_class=MyForm, template_name='myapp/page.html'):
    # app code here
    this_url = reverse('view1')
    render_to_response(template_name, locals(), RequestContext(request))

def view2(request, form_class=MyForm, template_name='myapp/page.html'):
    # app code here
    this_url = reverse('view2')
    render_to_response(template_name, locals(), RequestContext(request))
myapp/page.html

<a href="{{ this_url }}">Webpage</a>
{% load dynurl_tags %}
<a href="{% dynurl this_view %}">Webpage</a>
myapp/page.html

<a href="{{ this_url }}">Webpage</a>
{% load dynurl_tags %}
<a href="{% dynurl this_view %}">Webpage</a>
{%load dynurl\u tags%}
但是,您还没有确切解释为什么需要指向当前视图的链接。链接到同一页是为了方便吗?有几种方法可以做到这一点:

<a href="">technically this points back to the same page</a>
<a href="{{ request.path }}">this url is the full path before the query string</a>
<a href="{{ request.get_full_path }}">this url is the full path plus the query string</a>

我认为,思考这两种观点之间的关键区别是什么,并提出一个描述其区别的变量,这将是有益的。然后在模板中使用该变量来确定新的URL

对于更复杂的问题,您可能希望了解它们以及它们是如何解决的。基本上,它允许您复制给定应用程序的所有URL,并传入一个“group”变量,该变量用于创建基于特定组的URL反向查找

还可以将其他信息传递给模板,以便我能够理解 视图被称为。但我想这不是一个优雅的解决方案

当然是。下面是一个例子:

def view1(request, form_class=MyForm, template_name='myapp/page.html'):
    # app code here
    this_url = reverse('view1')
    render_to_response(template_name, locals(), RequestContext(request))

def view2(request, form_class=MyForm, template_name='myapp/page.html'):
    # app code here
    this_url = reverse('view2')
    render_to_response(template_name, locals(), RequestContext(request))
myapp/page.html

<a href="{{ this_url }}">Webpage</a>
{% load dynurl_tags %}
<a href="{% dynurl this_view %}">Webpage</a>
myapp/page.html

<a href="{{ this_url }}">Webpage</a>
{% load dynurl_tags %}
<a href="{% dynurl this_view %}">Webpage</a>
{%load dynurl\u tags%}
但是,您还没有确切解释为什么需要指向当前视图的链接。链接到同一页是为了方便吗?有几种方法可以做到这一点:

<a href="">technically this points back to the same page</a>
<a href="{{ request.path }}">this url is the full path before the query string</a>
<a href="{{ request.get_full_path }}">this url is the full path plus the query string</a>

我认为,思考这两种观点之间的关键区别是什么,并提出一个描述其区别的变量,这将是有益的。然后在模板中使用该变量来确定新的URL


对于更复杂的问题,您可能希望了解它们以及它们是如何解决的。基本上,它允许您复制给定应用程序的所有URL,并传入一个“group”变量,该变量用于创建基于特定组的URL反向查找。

插件开发(如果需要)。这将向您显示有关当前呈现页面的大量信息。

插件开发,如果您需要的话。这显示了有关当前呈现页面的大量信息。

谢谢。我想我解释不清楚。基本上,我所需要的就是得到url名称,然后我就可以用它的名称来构造url,比如{%url-url-name%}。我也可以照你说的做。我不知道你通常喜欢哪一个。关键问题是你需要url名称的目的是什么。在
{%url something%}
中,
something
是视图的名称。它不可能是一个变量。因此,本质上,URL的第一部分——即视图——用
{%URL%}
调用始终是静态的。这意味着,如果需要它调用其他视图,则永远不能使用
{%url%}
。如果实际需要的URL与正在查看的页面相同,则使用
{{request.path}
。如果您真正想要的URL是与该视图一致的其他URL,请使用
{{this_URL}}
。谢谢。我想我解释不清楚。基本上,我所需要的就是得到url名称,然后我就可以用它的名称来构造url,比如{%url-url-name%}。我也可以照你说的做。我不知道你通常喜欢哪一个。关键问题是你需要url名称的目的是什么。在
{%url something%}
中,
something
是视图的名称。它不可能是一个变量。因此,本质上,URL的第一部分——即视图——用
{%URL%}
调用始终是静态的。这意味着,如果需要它调用其他视图,则永远不能使用
{%url%}
。如果实际需要的URL与正在查看的页面相同,则使用
{{request.path}
。如果您实际需要的URL是与该视图一致的其他URL,请使用
{{{this_URL}}