oops)

2012/7/11 Сергей Фурсов <geyse...@gmail.com>

> Some notes about your models:
> 1. why do you create id field manually? Django will do it for you ;)
> 2. why do you explicitly set db_table and db_column? Do you have some
> legacy database? If not, django will do it for you ;)
> 3. move your vision from tables to objects
> 4. call your models in CamelCase notation and in singular form
> 5. try to understand related_name parameter
> https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.ForeignKey.related_name
>
> in my opinion your models should looks like:
> from django.db import models
>
> class Owner(models.Model):
>     num = models.IntegerField()
>
>     def __unicode__(self):
>         return unicode(self.num)
>
>
> class Vehicle(models.Model):
>     plate = models.CharField(max_length=80, unique=True)
>     owner1 = models.ForeignKey('Owner', null=True,
> related_name='vehicles1', blank=True)
>     owner2 = models.ForeignKey('Owner', null=True,
> related_name='vehicles2', blank=True)
>
>     def __unicode__(self):
>         return self.plate
>
>
> class WebRequest(models.Model):
>     owner = models.ForeignKey('Owner')
>     vehicle1 = models.ForeignKey(Vehicle, related_name='web_requests1')
>     vehicle2 = models.ForeignKey(Vehicle, null=True,
> related_name='web_requests2', blank=True)
>
>
>
> 2012/7/11 Сергей Фурсов <geyse...@gmail.com>
>
>> Ok, I tried your code, just added in models.py fake owners model to
>> correct foreign key
>>
>> class Owners(models.Model):
>>     num = models.IntegerField()
>>
>>     def __unicode__(self):
>>         return unicode(self.num)
>>
>> and create views.py with three lines of code:
>>
>> def page(request):
>>     form = WebrequestsForm(own_id=1)
>>     return render_to_response('page.html', {'form': form})
>>
>> and it works!
>> May be problem in your views.py?
>>
>>
>> 2012/7/10 Сергей Фурсов <geyse...@gmail.com>
>>
>>> as described in error message your view  function have to use
>>> RequestContext<http://docs.djangoproject.com/en/dev/ref/templates/api/#subclassing-context-requestcontext>
>>>  for
>>> the template, instead of Context.
>>> your view should looks like
>>>
>>> def about(request):
>>>     if request.method == 'POST':
>>>         return HttpResponseRedirect('/about/')
>>>     elif request.method == 'GET':
>>>         return render_to_response('about.html',
>>> context_instance=RequestContext(request))
>>>     else:
>>>         raise Http404()
>>>
>>> note that you redirect (HttpResponseRedirect) to url, but
>>> render (render_to_response) template with context
>>>
>>> also I changed action for form in tempalte to /about/ to handle POST and
>>> GET requests in same view
>>>
>>> hope this helps
>>>
>>> 2012/7/10 JJ Zolper <codinga...@gmail.com>
>>>
>>>> Here is the error I received with debug set to true for Django:
>>>>
>>>> Forbidden (403)
>>>>
>>>> CSRF verification failed. Request aborted.
>>>> Help
>>>>
>>>> Reason given for failure:
>>>>
>>>>     CSRF token missing or incorrect.
>>>>
>>>>
>>>> In general, this can occur when there is a genuine Cross Site Request
>>>> Forgery, or when Django's CSRF 
>>>> mechanism<http://docs.djangoproject.com/en/dev/ref/contrib/csrf/#ref-contrib-csrf>
>>>>  has
>>>> not been used correctly. For POST forms, you need to ensure:
>>>>
>>>>    - The view function uses 
>>>> RequestContext<http://docs.djangoproject.com/en/dev/ref/templates/api/#subclassing-context-requestcontext>
>>>>  for
>>>>    the template, instead of Context.
>>>>    - In the template, there is a {% csrf_token %} template tag inside
>>>>    each POST form that targets an internal URL.
>>>>    - If you are not using CsrfViewMiddleware, then you must use
>>>>    csrf_protect on any views that use the csrf_token template tag, as
>>>>    well as those that accept the POST data.
>>>>
>>>> You're seeing the help section of this page because you have DEBUG =
>>>> True in your Django settings file. Change that to False, and only the
>>>> initial error message will be displayed.
>>>>
>>>> You can customize this page using the CSRF_FAILURE_VIEW setting.
>>>>
>>>>
>>>> I'm wondering if this is caused because I don't have a redirect page
>>>> for my 'POST' HTML submit.
>>>>
>>>> Now my code...
>>>>
>>>> URLCONF:
>>>>
>>>> from django.conf.urls.defaults import patterns, include, url
>>>>
>>>> from MadTrak.manageabout.views import about, about_form
>>>>
>>>>
>>>>     # Uncomment the next two lines to enable the admin:
>>>>
>>>> from django.contrib import admin
>>>>
>>>> admin.autodiscover()
>>>>
>>>>
>>>> urlpatterns = patterns('',
>>>>
>>>>
>>>>     (r'^about_form/', about_form),
>>>>
>>>>     (r'^about/', about),
>>>>
>>>>
>>>>     # Examples:
>>>>
>>>>     # url(r'^$', 'MadTrak.views.home', name='home'),
>>>>
>>>>     # url(r'^MadTrak/', include('MadTrak.foo.urls')),
>>>>
>>>>
>>>> ## url(r'^$', 'MadTrak.views.home', name='home'), with a view named home
>>>>
>>>> ## url(r'^listen/', 'MadTrak.views.home', name='home'), with a view
>>>> named home
>>>>
>>>> ## url(r'^home/', 'MadTrak.views.home', name='home'), with a view named
>>>> home
>>>>
>>>>
>>>>     # Uncomment the admin/doc line below to enable admin documentation:
>>>>
>>>>     # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),
>>>>
>>>>
>>>>     # Uncomment the next line to enable the admin:
>>>>
>>>>     url(r'^admin/', include(admin.site.urls)),
>>>>
>>>> )
>>>>
>>>>
>>>> views.py in my manageabout app:
>>>>
>>>> from django.http import HttpResponseRedirect
>>>>
>>>> from django.shortcuts import render_to_response
>>>>
>>>> from MadTrak.manageabout.models import AboutMadtrak
>>>>
>>>>
>>>> def about_form(request):
>>>>
>>>>     return render_to_response('about_form.html')
>>>>
>>>>
>>>> def about(request):
>>>>
>>>>     if request.method == 'POST':
>>>>
>>>>        # do_something_for_post()
>>>>
>>>>     return HttpResponseRedirect('about.html')
>>>>
>>>>     elif request.method == 'GET':
>>>>
>>>>         return render_to_response('/')
>>>>
>>>>     else:
>>>>
>>>>         raise Http404()
>>>>
>>>>
>>>> model where i tried to set up my database to recieve the information
>>>> posted:
>>>>
>>>> from django.db import models
>>>>
>>>>
>>>> class AboutMadtrak(models.Model):
>>>>
>>>>     name = models.CharField(max_length=30)
>>>>
>>>>     title = models.CharField(max_length=60)
>>>>
>>>>     bio = models.CharField(max_length=200)
>>>>
>>>>     website = models.URLField()
>>>>
>>>>
>>>>     def __unicode__(self):
>>>>
>>>>        return self.nam
>>>>
>>>>
>>>>  my template for the about form submission:
>>>>
>>>>
>>>> <html>
>>>>
>>>> <title>About-Form</title>
>>>>
>>>> <head>
>>>>
>>>>
>>>> </head>
>>>>
>>>> <body>
>>>>
>>>>
>>>> MadTrak About Page, Yo!
>>>>
>>>>
>>>> <p></p>
>>>>
>>>>
>>>>  <form action="/about_form/" method="post">
>>>>
>>>> {% csrf_token %}
>>>>
>>>> <p>Name: <input type="text" name="name" value=""></p>
>>>>
>>>> <p>Title: <input type="text" name="title" value=""></p>
>>>>
>>>>         <p>Bio: <textarea name="bio" rows="10"
>>>> cols="50"></textarea></p>
>>>>
>>>> <p>Website: <input type="text" name="website" value=""></p>
>>>>
>>>> <input type="submit" value="Submit">
>>>>
>>>>  </form>
>>>>
>>>>
>>>> </body>
>>>>
>>>> </html>
>>>>
>>>>
>>>>
>>>> In conclusion I am fairly new to even 'POST' and 'GET' operations so I
>>>> apologize haha. Anyways, I see the CSRF error and I was confused because i
>>>> recall that having to do with security? An open operation from submission
>>>> to a redirect page? I'm not sure.
>>>>
>>>> All I wanted to accomplish was to be able to post the data in that
>>>> template and see the result in my in my MadTrak database. That's it. Just
>>>> see the data as an item in my database. Any help is welcomed as I try to
>>>> iron this out!
>>>>
>>>> Cheers to all the Django developers out there!
>>>>
>>>> JJ Zolper
>>>>
>>>>  --
>>>> You received this message because you are subscribed to the Google
>>>> Groups "Django users" group.
>>>> To view this discussion on the web visit
>>>> https://groups.google.com/d/msg/django-users/-/DChOPlS2aAsJ.
>>>> To post to this group, send email to django-users@googlegroups.com.
>>>> To unsubscribe from this group, send email to
>>>> django-users+unsubscr...@googlegroups.com.
>>>> For more options, visit this group at
>>>> http://groups.google.com/group/django-users?hl=en.
>>>>
>>>
>>>
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to