Перенаправление пользователя в шаблоне django

Символы являются рубиновым путем. Однако иногда одна потребность говорить с некоторым кодом C или чем-то или Java, которые представляют некоторое перечисление для различных вещей.

<час>
#server_roles.rb
module EnumLike

  def EnumLike.server_role
    server_Symb=[ :SERVER_CLOUD, :SERVER_DESKTOP, :SERVER_WORKSTATION]
    server_Enum=Hash.new
    i=0
    server_Symb.each{ |e| server_Enum[e]=i; i +=1}
    return server_Symb,server_Enum
  end

end
<час>

Это может тогда использоваться как этот

<час>
require 'server_roles'

sSymb, sEnum =EnumLike.server_role()

foreignvec[sEnum[:SERVER_WORKSTATION]]=8
<час>

, Это, может, конечно, быть сделан абстрактным, и можно прокрутить наш собственный Класс Enum

5
задан csmith 17 April 2019 в 16:32
поделиться

4 ответа

Я думаю, вы захотите сделать это в представлении , а не в шаблоне . Итак, что-то вроде:

from django.http import HttpResponseRedirect

def myview(request):
    if request.user.get_profile().is_store():
        return HttpResponseRedirect("/path/")

    # return regular view otherwise

Вы также можете использовать @decorator для представления, если вам нужно это делать много раз.

20
ответ дан 18 December 2019 в 05:17
поделиться

Я думаю, вы можете сделать перенаправление в коде представления.

Например, это будет работать в Django 1.1.

from django.shortcuts import redirect

def my_view(request):
    if request.user.get_profile().is_store:
        return redirect('index')
    # normal view code here
    return ....

Документация по ярлыку перенаправления находится здесь: http://docs.djangoproject.com/en/dev/topics/http/shortcuts/ Аргументами для redirect () могут быть (цитируя документы):

  • Модель: функция get_absolute_url () модели будет
  • Имя представления, возможно с аргументами: urlresolvers.reverse () будет использоваться для обратного разрешения имени.
  • URL-адрес, который будет использоваться как есть для местоположения перенаправления.
2
ответ дан 18 December 2019 в 05:17
поделиться

Вы не делаете это в шаблоне, но в представлении. Вместо вызова render_to_response (что, я полагаю, вы делаете сейчас), вы должны вызвать HttpResponseRedirect .

1
ответ дан 18 December 2019 в 05:17
поделиться

Вы действительно не хотите перенаправлять в шаблоне, как сказано во всех других ответах.

Но если перенаправление в представлении не вариант (почему вообще), вы можете сделать это :

{% if user.get_profile.is_store %}
    {% include '/path/to/template' %}
{% else %}
    {% include '/path/to/another_template' %}
{% endif %}
5
ответ дан 18 December 2019 в 05:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: