best aproach to pass an email from the url to a view?

40 views
Skip to first unread message

dk

unread,
Oct 9, 2014, 8:00:29 PM10/9/14
to django...@googlegroups.com
I put the Email that I got from a form into the url (I am using the url as a variable to store the email)

and look like this

url:
url(r'^vote/thank/(?<your_email>   #here should be RE catching the email    )$', views.thank),
view:
def thank(request, your_email=None):
    c
= {"thanks_body": "thanks_body view"}
    c
["his_email"] = your_email
   
return render(request, "thanks.html", c)

I am having issues to try to come up with a RE to grab the email
using it on my url
such
url(r'^vote/thank/(?<your_email>^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$ ', views.thank),
 and I still don't catch it, I think because I am just copy pasting but in the url string should be arrenge diferntly?
I was reading about a  get function that can make a quary on the url like a dictionary?  any example on how to use it?

thanks,  (I order a book for RE  =)  just to be able to udertand a little bit more   )



James Schneider

unread,
Oct 10, 2014, 4:26:11 AM10/10/14
to django...@googlegroups.com
Try adding a capital P after the ? in your named capture group.

Otherwise your capture group does not place its value in the your_email variable as you are expecting:

(?P<your_email>...


Check out the Python re module syntax for an explanation:


-James
--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users...@googlegroups.com.
To post to this group, send email to django...@googlegroups.com.
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/b84874c3-32ad-47fb-82db-5e48b87a975d%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Daniel Roseman

unread,
Oct 10, 2014, 8:35:16 AM10/10/14
to django...@googlegroups.com
I think you're trying too hard here. Regexes for email are usually concerned with *validation*, ie checking in a form that the thing typed into the "email" field looks like an actual email. But that is not, or should not be, a consideration in a URL: at this point the email has already been validated, and all you want to do is to send it to the next page. So you probably just want to grab everything after the `thank` part:

'^vote/thank/(?<your_email>.*)$'

To be honest though, this is something I wouldn't even try to catch in the URL at all. Instead, pass it as a querystring parameter, so the URL would be in the format "/vote/thank/?email=f...@bar.com" and you get it in the view as `request.GET['email']`.
--
DR>

dk

unread,
Oct 10, 2014, 7:21:35 PM10/10/14
to django...@googlegroups.com
WOW SUPER EASY!!!!
I been fighting to the get the email and passing it

thanks for the tips, and how to use it.


my url
url(r'^vote/thank/$', views.thank),


my views

def vote(request):
   
if request.method == "POST":
        form
= polls.forms_DK.NameForm(request.POST)
       
if form.is_valid():
            your_email
= form.cleaned_data["your_email"]
            ratio
= str(form.cleaned_data["ratio"])
           
adress = "thank/?email="+your_email+"/" # here I make the URL
           
return HttpResponseRedirect(adress)
   
else:
        form
= polls.forms_DK.NameForm()
    django
.setup()
    all_restaurants
= Restaurant.objects.all()
   
return render(request, "vote_form.html", {"all_restaurants": all_restaurants, "form": form})

def thank(request, your_email=None): # I don't need your_email=None
    c
= {"thanks_body": "thanks_body view"} # I can rearenge the dictonary
   
remail = request.GET["email"] #here I pick up the email
    c
["thanks_body"] = remail
   
return render(request, "thanks.html", c)


Javier Guerra Giraldez

unread,
Oct 11, 2014, 1:42:33 AM10/11/14
to django...@googlegroups.com
On Fri, Oct 10, 2014 at 6:21 PM, dk <dem...@gmail.com> wrote:
> I been fighting to the get the email and passing it


if you want to keep a value from one request to another, check the
Session feature. In short, it works (almost) like a persistent
dictionary private for each web user.

--
Javier
Reply all
Reply to author
Forward
0 new messages