2016-05-28 2 views
0

У меня есть этот вид:Использовать другой взгляд в Django, если URL содержит специфический характер

def url_redirect(request,id): 
     url = get_object_or_404(Url,short_id=id) 
     return HttpResponseRedirect(url.httpurl) 

и эти URLs:

urlpatterns = [ 
     url(r'^admin/', admin.site.urls), 
     url(ur'^(?P<id>.*)$', views.url_redirect), 

] 

В основном то, что он перенаправляет от http://127.0.0.1:8000/XYZ на другой сайт

Теперь я хотел бы иметь возможность использовать другое представление, если URL-адрес слегка меняется, добавив «!». характер, то есть:

http://127.0.0.1:8000/!XYZ

Поэтому, когда я использую этот адрес будет делать что-то другое, чем при перенаправлении.

Любая идея, как я могу это сделать? Любая помощь приветствуется.

+0

если в id что-то делать? – dnit13

+0

Не уверен, что "!" должен быть в , потому что я запрашиваю db с ним, и не должно быть объектов, которые его содержат. – sztyrymytyry

+0

@sztyrymytyry Если вы знаете, что '!' Есть, вы можете удалить его и запросить db с остатком ... – schwobaseggl

ответ

1

Если вы хотите иметь дело с ним в ту же точку зрения, оставьте urls, как они есть, и изменить вид: «!»

def url_redirect(request,id): 
    if id.startswith('!'): 
     id = id[1:] 
     # do whatever you want with id 
    else: 
     url = get_object_or_404(Url,short_id=id) 
     return HttpResponseRedirect(url.httpurl) 
+0

Привет! url (ur '^! (? P . *) $', views.diff_view) не работает: S по-прежнему пытается использовать views.url_redirect. Однако начальный удар - это то, что я ищу, так что спасибо большое! – sztyrymytyry

+0

Восклицательные знаки показаны как% 21 в URL-адресах, так что на самом деле он никогда не будет работать – Sayse

+0

@Sayse Aw, можете ли вы попытаться сопоставить версию с URL-кодом '% 21'? – schwobaseggl

 Смежные вопросы

  • Нет связанных вопросов^_^