TypeError at / registration __init __ () получил неожиданный аргумент ключевого слова 'null' - PullRequest
2 голосов
/ 27 января 2012

Метод запроса: GET URL запроса: http://127.0.0.1:8000/registration Версия Django: 1.3.1 Тип исключения: TypeError Значение исключения:

__init__() получил неожиданный аргумент ключевого слова 'null'

Расположение исключения: /usr/local/lib/python2.7/dist-packages/django/forms/fields.py в init , строка 196 Исполняемый файл Python: / usr / bin / pythonВерсия Python: 2.7.2 Путь к Python:

['/ home / forent / myprograms / mysite7', '/usr/local/lib/python2.7/dist-packages/oauth2-1.5.211-py2.7.egg ',' /usr/local/lib/python2.7/dist-packages ',' /usr/local/lib/python2.7/dist-packages/python_twitter-0.8.2-py2.7.egg',' /usr/local/lib/python2.7/dist-packages/ipython-0.12-py2.7.egg ',' /usr/lib/python2.7 ',' /usr/lib/python2.7/plat-linux2 ',' /usr/lib/python2.7/lib-tk ',' /usr/lib/python2.7/lib-old ',' /usr/lib/python2.7/lib-dynload ','/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/PIL', '/usr/lib/python2.7/dist-packages/gst-0.10 ',' / usr / lib / python2.7 / dist-packages / gtk-2.0 ',' /usr/lib/pymodules/python2.7 ',' /usr/lib/python2.7/dist-packages/ubuntu-sso-client ',' / usr/lib/python2.7/dist-packages/ubuntuone-client ',' /usr/lib/python2.7/dist-packages/ubuntuone-control-panel ',' /usr/lib/python2.7/dist-packages/ ubuntuone-couch ',' /usr/lib/python2.7/dist-packages/ubuntuone-installer ',' /usr/lib/python2.7/dist-packages/ubuntuone-storage-protocol']

Время сервера: пт, 27 января 2012 11:11:22 -0600

#

view

from django.shortcuts import render_to_response
from registration.models import UserDetails
from forms import UserForm
from django.template import RequestContext
from django.http import HttpResponseRedirect


def user_details(request):
    if request.method=="POST":
        uform=UserForm(request.POST)
        if uform.is_valid():
            profile=uform.save(commit=False)
            profile.save()
        else:
            uform=UserForm()
        return render_to_response('career.html',{'uform':uform},context_instance=RequestContext(request))

#model

from django.db import models

class UserDetails(models.Model):
    fname=models.CharField(max_length=20)
    lname=models.CharField(max_length=20)
    email = models.EmailField()
    address = models.CharField(max_length=50)
    country = models.CharField(max_length=20)
    def __unicode__(self):
        return self.fname
        return self.lname
        return self.email
        return self.address
        return self.country
#forms

from django import forms
from registration.models import UserDetails


class UserForm(forms.Form ):
    fname=forms.CharField(max_length=20, null=True,blank=True)
    lname=forms.CharField(max_length=20, null=True,blank=True)
    email = forms.EmailField(blank=True, null=True)
    address = forms.CharField(max_length=50, null=True,blank=True)
    country = forms.CharField(max_length=20, null=True,blank=True)

#urls

from django.conf.urls.defaults import patterns, include, url

from django.contrib import admin
admin.autodiscover()
# Uncomment the next two lines to enable the admin:
# from django.contrib import admin
# admin.autodiscover()

urlpatterns = patterns('',
    # Examples:
     url(r'^registration/$', 'registration.views.user_details', name='user_details'),
    # url(r'^mysite7/', include('mysite7.foo.urls')),

    # 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)),
)

#template 

<form enctype="multipart/form-data" method="post">{% csrf_token %}
    {{ uform.as_p }}
   <input type="submit" ....>
</form>

это код, который я написал ..

Ответы [ 2 ]

8 голосов
/ 27 января 2012

Поля формы не имеют null или blank аргументов.Это только для модельных полей.Для полей формы у вас просто есть required.

Однако вы действительно должны использовать ModelForm , который создаст поля формы для вас из модели и позволит вам сохранить его впоследствии.

0 голосов
/ 27 января 2012

Не положительно, но я не думаю, что вы можете использовать null=True или blank=True на forms.CharField(), вы передаете null в качестве параметра для init () forms.CharField, и интерпретатор выдаетэта ошибка.Попробуйте удалить null=True из:

Измените ваши формы на:

class UserForm(forms.Form ):
fname=forms.CharField(max_length=20)
lname=forms.CharField(max_length=20)
email = forms.EmailField()
address = forms.CharField(max_length=50)
country = forms.CharField(max_length=20)

Для сайта django Поля форм Django , у CharField есть два необязательных аргумента для проверки: max_lengthи min_length вместе с обязательным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...