【问题标题】:Django 1.6 Model Forms, AttributeErrorDjango 1.6 模型表单,AttributeError
【发布时间】:2014-08-26 03:15:35
【问题描述】:

Django 1.6。模型形式问题。电子商务。

你好,

对于我看似“非常简单(没错)”的问题,我真的很感激。 Noob to Django,只是想为我正在制作的一个非常基本的电子商务网站获取客户应用程序。在这个阶段,计划是让客户能够填写他们的姓名和地址详细信息以进行送货。我已经在网上和这里阅读了如此多的文章,方法略有不同,但都不是我想要的(看似简单的:-))。我现在完全糊涂了……!

我的问题是: 1)这个错误是什么意思,我该如何解决? 2)我的代码是否正确显示模型表单? ……还有奖金…… 3)有没有更好的(读起来简单)方法来为网站制作名称和地址收集器?

我有一个模型,我认为最好的计划是从中生成一个模型表单。但是,我现在得到的错误(一天中的第 100 万个错误)是

AttributeError at /customers/

'list' object has no attribute 'resolve'

Request Method:     GET
Request URL:    http://127.0.0.1:8000/customers/
Django Version:     1.6.5
Exception Type:     AttributeError
Exception Value:    

'list' object has no attribute 'resolve'

Exception Location:     /home/david/.virtualenvs/winestore/local/lib/python2.7/site-packages/django/core/urlresolvers.py in resolve, line 339   

models.py:

from django.db import models
from django.forms import ModelForm
from django.utils.encoding import smart_unicode


    first_name = models.CharField(max_length=120)
    last_name = models.CharField(max_length=120)
    email = models.EmailField()
    address_1 = models.CharField(max_length=120)
    address_2 = models.CharField(max_length=120, null=True, blank=True)
    town = models.CharField(max_length=120)

    ~~~~~ Other Fields ~~~~~~

    def __unicode__(self):
        return smart_unicode(self.email)

class CustomerForm(ModelForm):
    class Meta:
        model = Customer
        fields = ['first_name', 'last_name', 'email', ~~~~other fields~~~~~]

urls.py(主项目 urls.py 有 url(r'^customers/', include('customers.urls')), 指向这里)。

from django.conf.urls import patterns, url
from customers.views import CustomerForm

urlpatterns = patterns('',
    url(r'^$', CustomerForm.as_view, name ='add_customer')),

views.py

from django.http import HttpResponse
from django.views.generic import View
from customers.models import Customer, CustomerForm

class CustomerForm(View):
    class Meta:
        model = Customer
        template_name ='add_customer.html'

        def get_success_url (self):
            return HttpResponse('success.html')

模板 add_customer.html

<h1>Add Your details please</h1>
<form action="" method="POST">
    {% csrf_token %}
<ul>
    {{ form.as_ul }}
</ul>
<input id="save_customer" type="submit" value="Save" />

</form>
<a href="{% url "/" %}">Back home</a>

我有一个 forms.py ,但阅读它不是模型表单(?)所必需的。

非常感谢任何帮助。

Edit_V_2:感谢 Peter 和 Luis,他们分别注意到 urls.py 中的尾随逗号,并且应该是 CustomerForm.as_view(),而不是 CustomerForm.as_view。

页面现在加载!但遗憾的是空白。所以,这么近……!

编辑 3: 给出的服务器错误是 405 错误。据此(Django 1.5 giving error 405 for simple form),问题可能出在 urls.py 地址中。

【问题讨论】:

  • 你可能有更长的回溯:你能包括其余的吗?
  • 嗨,大卫。感谢那。 Peter(下)注意到 urls.py 文件中的尾随逗号,删除将 /customers/ 处的错误消息更改为 TypeError as_view() 正好需要 1 个参数(给定 2 个)。你还想要旧错误的回溯吗?!? (很高兴分享... :-))
  • 不需要,听起来问题已经解决了。由于您的第一个问题(两个问题!)已经解决,因此接受答案可能是个好主意,然后尝试自己解决新的(第三个)问题。如果你不能,你可以开始一个新的问题。这是避免成为"chameleon question" 的好方法 :)
  • 好的。会做。再次感谢。

标签: python django forms attributeerror django-forms


【解决方案1】:

如果您的urls.py 文件与显示的完全一样,则说明您有错字:

urlpatterns = patterns('',
    url(r'^$', CustomerForm.as_view, name ='add_customer')),

尾随逗号将变量从patterns 对象转换为patterns 对象的长度为1 的元组,例如:

>>> foo = 1,
>>> type(foo)
<type 'tuple'>

【讨论】:

  • 谢谢彼得!这已将错误更改为: TypeError at /customers/ as_view() 只需要 1 个参数(给定 2 个) 请求方法:GET 请求 URL:<a href="/default/index/tourl?u=aHR0cDovLzEyNy4wLjAuMTo4MDAwL2N1c3RvbWVycy8%3D" rel="nofollow" target="_blank">127.0.0.1:8000/customers</a> Django 版本:1.6.5 异常类型:TypeError 异常值:as_view( ) 只需要 1 个参数(给定 2 个)异常位置:/home/david/.virtualenvs/winestorefour/local/lib/python2.7/site-packages/django/core/handlers/base.py 在 get_response,第 112 行代码&gt;
  • as_view ... 不应该像TemplateView 那样查看as_view()
  • 哇!路易斯!现在页面加载!它仍然是空白的,所以还有其他问题,但它现在加载了.. 谢谢。谢谢。谢谢。
猜你喜欢
  • 2014-08-12
  • 2019-07-19
  • 2014-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多