Как передать переменные с пробелами через URL в: Django - PullRequest
8 голосов
/ 23 ноября 2011

У меня проблемы с передачей переменных через пробелы в URL. Теперь предположим, что у меня есть объект

class Kiosks(models.Model):
    name = models.CharField(max_length = 200, unique = True)
    owner = models.ForeignKey(User)

Теперь «имя», введенное для киоска, называется «Акаш Дешпанде» и сохранено. Теперь при перенаправлении на новую страницу в представлениях я использую «название киоска» т.е.

 messages.success(request,"Kiosk edited successfully") 
 return HttpResponseRedirect('/kiosks/'+kiosk.name+'/')

Вид, который обслуживает этот URL, выглядит следующим образом:

def dashboard(request, kiosk_name):
    kiosk =Kiosks.objects.get(name__iexact = kiosk_name)
    deal_form = DealsForm(kiosk=kiosk)
    code_form = CodeForm()
    unverified_transactions = get_unverified_transactions(kiosk)
    return render(request,'kiosks/dashboard.html',{'kiosk':kiosk, 
                                                   'deal_form' : deal_form,
                                                   'code_form' : code_form,
                                                   'unverified_transactions' : unverified_transactions})

Основной urls.py просто направляет все с "киосками" на следующие URL киоски urls.py

urlpatterns = patterns('kiosks.views',url(r'^(\w+)/$', 'dashboard'),)

Теперь вместо перехода на эту страницу выдается ошибка «Страница не найдена». Как передать переменные, в которых есть место? Вопрос понятен? Любая помощь будет высоко оценена.

Ответы [ 2 ]

10 голосов
/ 23 ноября 2011

Оставьте пробелы в вашем регулярном выражении.

urlpatterns = patterns('kiosks.views', url(r'^([\w ]+)/$', 'dashboard'),)

А для любви к Питу используйте reverse(). Это поможет вам поймать глупые ошибки, подобные этой.

2 голосов
/ 12 февраля 2014

да .. разрешить пробелы в вашем регулярном выражении .. что-то вроде этого работает для меня ..

url(r'^find-interiordesigners/state-(?P<state>.+?)/$',DesignersByCategoryCityState.as_view(),name='findInterior-state'),
...