9

I am having trouble in passing variables with spaces in them through the urls. Now Suppose I have an object

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

Now the "name" entered for kiosk is say "Akash Deshpande" and saved. Now while redirecting to a new page in the views, i am using the "kiosk name " i.e.

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

The view which caters to this url is as follows:

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})

The main urls.py simply directs everything with "kiosks" to bellow urls kiosks urls.py

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

Now instead of going to this page it is giving an error "Page not found". How do i pass variables which have space in them ? Is the question clear? Any help will be highly appreciated.

1
  • what does the view entry in urls.py look like? Commented Nov 23, 2011 at 6:53

3 Answers 3

14

Allow spaces in your regex.

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

And for the love of Pete, use reverse(). It will help you catch silly mistakes like this.

Sign up to request clarification or add additional context in comments.

Comments

4

yup .. allow spaces in your regex .. something like this works for me ..

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

Comments

0

here is the relevant example i have used to ignore the space in regex, where \s is working to avoid space in the url name

url(r'^api/product/(?P<product_name>[\w\s]+)/$',ProductDetailApiView.as_view()),

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.