2012-01-30 53 views
0
 
Request Method:  POST 
Request URL: http://127.0.0.1:8000/registration/ 
Django Version:  1.3.1 
Exception Type:  AttributeError 
Exception Value:  

'UserForm' object has no attribute 'save' 

Exception Location:  /home/forent/myprograms/mysite7/registration/views.py in user_details, line 15 
Python Executable: /usr/bin/python 
Python Version:  2.7.2 
Python Path:  

['/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'] 

Server time: Mon, 30 Jan 2012 03:24:22 -0600 

我得到了这样的错误。我无法保存我的表格。请帮我救我的形式AttributeError at/registration /'UserForm'对象没有属性'save'

我的代码如下

#view 

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

def user_details(request): 
    if request.method == 'POST': 
     form = UserForm(request.POST) 
     if form.is_valid(): 
      form.save() 
      return HttpResponseRedirect('/thanx/') 

    else: 
     form = UserForm()   
    return render_to_response("career.html", {"form": form},context_instance=RequestContext(request)) 


#form 

    from django import forms 
from registration.models import UserDetails 


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) 

#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 


#url 

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 %} 
    {{ form.as_p }} 
    <input type="submit" ....> 
</form> 

我也希望我的代码添加ajaxcode的形式在一个页面DISPLY第3周的Fileds。剩余2个字段的下一页。并且页面想要在单个窗口中显示。还必须验证这些字段。但我没有关于django的ajax的清晰想法。我如何在我的代码中应用所有这些东西

回答

1

您定义的用户窗体不是ModelForm,因此也不是does not have a save() method

使用ModelForm例如

class UserForm(forms.ModelForm): 
    class Meta: 
     model = UserDetails 
+0

另外,好像你已经提出了一个与此问题有关的问题,这也表明ModelForm - http://stackoverflow.com/a/9038546/188955 – JamesO 2012-01-30 10:16:01

3

您无法保存表格。表单用于将数据从模型(DB)显示给用户(通常)。您可以使用forms.ModelForm形式从保存模型的一个实例:

https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#the-save-method

forms.py

class UserForm(forms.ModelForm): 
    pass 

    class Meta: 
     model = UserDetails 

附: Django已经内置了身份验证,因此不需要复制代码。看看django.contrib.authhttps://docs.djangoproject.com/en/dev/topics/auth/

+0

问题解决了。保存我的表单非常感谢你......我可以用我的代码添加ajax ..? – user1144808 2012-01-30 10:28:11

+0

这是一个不同的问题,所以你需要打开一个不同的问题,更好地解释问题 – 2012-01-30 10:32:34

相关问题