How do I use request.META.get('HTTP_REFERER') within template?

天涯浪子 提交于 2019-12-10 02:11:58

问题


I'd like to use request.META.get('HTTP_REFERER') within template.

My template source:

<!-- this is login.html -->
{% extends "base.html" %}
{% block title %}django bookmark- login{% endblock %}
{% block head %}login{% endblock %}
{% block content %}
    {% if form.errors %}
    <p>try again!</p>
    {% endif %}
    <form method="post" action=".">{% csrf_token %}
        <p><label for="id_username">username:</label>
        {{ form.username }}</p>
        <p><label for="id_password">password:</label>
        {{ form.password }}</p>
        <input type="hidden" name="next" value="/<!-- I WANT TO USE 'HTTP_REFERER' HERE -->" />
        <input type="submit" value="login" />
    </form>
{% endblock %}

How what should I do?

urlpatterns = patterns('', (r'^login/$', 'django.contrib.auth.views.login'),

回答1:


There's no need for get.request.META is a dictionary, and as with all dictionaries, you can perform field lookup in the template using the dot notation: {{ request.META.HTTP_REFERER }}




回答2:


Add django.core.context_processors.request in your settings file in TEMPLATE_CONTEXT_PROCESSORS then you would be able to use the request in template without explicitly passing it in request context.

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.contrib.auth.context_processors.auth',
    'django.core.context_processors.debug',
    'django.core.context_processors.i18n',
    'django.core.context_processors.media',
    'django.core.context_processors.static',
    'django.core.context_processors.request', # this one
)

the in template you could do {{request.META.HTTP_REFERER}}




回答3:


Actually the preferred way is to use the next parameter as documented here

You can do in your template something like this:

<input type="hidden" name="next" value="{{  request.GET.next }}" />


来源:https://stackoverflow.com/questions/14010177/how-do-i-use-request-meta-gethttp-referer-within-template

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!