我刚刚在50小时前开始使用Django和Python ;-)所以这可能很容易,但我被卡住了。
我在项目中使用类似的“创建”视图,但没有问题。在这种情况下,我得到了上面提到的错误。
我正在使用Pinax ......
2 from django.shortcuts import render_to_response, get_object_or_404
3 from django.template import RequestContext
4 from django.http import HttpResponseRedirect
5 from django.core.urlresolvers import reverse
6 from django.contrib.auth.models import User
7 from django.contrib.auth.decorators import login_required
8 from django.utils.translation import ugettext_lazy as _
9
10 from django.conf import settings
11
12 if "notification" in settings.INSTALLED_APPS:
13 from notification import models as notification
14 else:
15 notification = None
16
17 from location.models import Location
18 from location.forms import LocationForm, LocationUpdateForm
19
20
21 @login_required
22 def create(request, form_class=LocationForm, template_name="location/create.html"):
23 location_form = form_class(request.user, request.POST or None)
24
25
26
27 if location_form.is_valid():
28 location = location_form.save(commit=False)
29 location.creator = request.user
30 location.save()
31 return HttpResponseRedirect(location.get_absolute_url())
32
33 return render_to_response(template_name, {
34 "location_form": location_form,
35 }, context_instance=RequestContext(request))
Traceback (most recent call last):
File "/Users/philgo20/code/LeadMiner/django/core/servers/basehttp.py", line 636, in __call__
File "/Users/philgo20/code/LeadMiner/django/core/handlers/wsgi.py", line 241, in __call__
File "/Users/philgo20/code/LeadMiner/django/core/handlers/base.py", line 134, in get_response
File "/Users/philgo20/code/LeadMiner/django/core/handlers/base.py", line 154, in handle_uncaught_exception
File "/Users/philgo20/code/LeadMiner/django/core/handlers/base.py", line 92, in get_response
File "/Users/philgo20/python/django/trunk/django/contrib/auth/decorators.py", line 78, in __call__
return self.view_func(request, *args, **kwargs)
File "/Users/philgo20/code/jezam_kms/apps/location/views.py", line 27, in create
if location_form.is_valid():
File "/Users/philgo20/code/LeadMiner/django/forms/forms.py", line 120, in is_valid
File "/Users/philgo20/code/LeadMiner/django/forms/forms.py", line 111, in _get_errors
File "/Users/philgo20/code/LeadMiner/django/forms/forms.py", line 234, in full_clean
File "/Users/philgo20/code/LeadMiner/django/forms/widgets.py", line 170, in value_from_datadict
AttributeError: 'User' object has no attribute 'get'
答案 0 :(得分:9)
在views.py
的第23行,您将request.user
作为LocationForm
实例化的第一个参数传递。
第一个参数应为request.POST
,除非您的表单已覆盖__init__()
方法。