Tuesday, 15 July 2014

Django returning blank page on POST -



Django returning blank page on POST -

this newbie error can't work out what's wrong. i've read through other similar questions on here non seem quite same.

i have simple form posts info blank response.

here's code:

url.py

urlpatterns = patterns('shotgun.views', # shotgun app url patterns url(r'^$', controlpanelview.as_view(), name='index'), )

form.py

class projectassignmentform(forms.form): projects = multiplechoicefield(widget=forms.checkboxselectmultiple) def __init__(self, user_projs, *args, **kwargs): super(projectassignmentform, self).__init__(*args, **kwargs) self.fields["projects"].choices = tuple([(item.name, item.name) item in sgproject.objects.all() if item.name != "template project"]) self.fields["projects"].initial = user_projs

view.py

class controlpanelview(slbaseview): template_name = "shotgun/index.html" def get_context_data(self, **kwargs): context = super(controlpanelview, self).get_context_data(**kwargs) sg_user = sgcustomnonprojectentity01.objects.filter(code=self.request.user.get_full_name())[0] projs = sgproject.objects.filter(q(entities__entity_id=sg_user.id), q(entities__type="customnonprojectentity01")) context["assigned_projs"] = projs if self.request.method == "post": form = projectassignmentform(projs, self.request.post) if form.is_valid(): # update user projects logic else: form = projectassignmentform(projs) context["pas_form"] = form homecoming context

template.html

<div class="full_width" > <h4 class="no_pad" >{{ user.first_name|upper }}'s command panel</h4> </div> <div class="full_width top_tab"> <div class="border border_pad"> <h6>projects assigned to</h6> {% if assigned_projs %} <form action="/intranet/shotgun/" method="post">{% csrf_token %} <div class="border_pad"> {{ pas_form.projects.errors }} {{ pas_form.projects }} <input type="submit" value="update" /> </div> </form> {% else %} <p>you not assigned projects.</p> {% endif %} </div> </div>

i have csrf middleware enabled in settings.py

the behaviour expect be:

unbound form - display page pre-populated data bound invalid - display page selected data bound valid - display page updated data

the unbound info page displays expected post request created clicking update button on form blank page displayed. tried throwing exception after if self.request.method == "post" statement code doesn't seem far. i'm not sure what's going on.

there syntax error in views.py file.

if self.request.method == "post": form = projectassignmentform(projs, self.request.post)

should

if self.request.method == "post": form = projectassignmentform(projs, self.request.post)

do have debugging turned off? explain why you're not getting output. because there fatal error django print error report, if debugging off email error study admin listed in settings.py instead.

check in settings.py:

debug = true

django django-forms django-templates django-views

No comments:

Post a Comment