Символы являются рубиновым путем. Однако иногда одна потребность говорить с некоторым кодом 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
Я думаю, вы захотите сделать это в представлении , а не в шаблоне . Итак, что-то вроде:
from django.http import HttpResponseRedirect
def myview(request):
if request.user.get_profile().is_store():
return HttpResponseRedirect("/path/")
# return regular view otherwise
Вы также можете использовать @decorator
для представления, если вам нужно это делать много раз.
Я думаю, вы можете сделать перенаправление в коде представления.
Например, это будет работать в 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 () могут быть (цитируя документы):
Вы не делаете это в шаблоне, но в представлении. Вместо вызова render_to_response (что, я полагаю, вы делаете сейчас), вы должны вызвать HttpResponseRedirect .
Вы действительно не хотите перенаправлять в шаблоне, как сказано во всех других ответах.
Но если перенаправление в представлении не вариант (почему вообще), вы можете сделать это :
{% if user.get_profile.is_store %}
{% include '/path/to/template' %}
{% else %}
{% include '/path/to/another_template' %}
{% endif %}