python - 为什么显示此错误 'function' 对象没有属性 'as_view'

标签 python django django-models django-views django-urls

我想更新我的用户配置文件数据。但是运行时出现此错误“function”对象没有属性“as_view”。

我使用的是 Django 1.8,python 2.7

我是 Django 新手。

urls.py代码:

from django.conf.urls import include, url
from . import views
urlpatterns = [

url(r'^(?P<pk>\d+)/$',
    views.UserProfileDetail.as_view(),
    name='user_profile_detail'),
url(r'^(?P<pk>\d+)/update/$',
    views.UserProfileUpdate.as_view(),
    name='user_profile_edit'),
]

views.py:

from django.shortcuts import render
from blog.models import Post, UserProfile
from blog.forms import UserForm, UserProfileForm, PostForm
from django.contrib.auth.models import User
from django.views.generic import DetailView
from django.views.generic import CreateView, UpdateView
from .models import UserProfile

class UserProfileDetail(DetailView):
    model = UserProfile

@login_required
class UserProfileUpdate(UpdateView):
    model = UserProfile
    fields = ('name', 'website',)

    def get(self, request, *args, **kwargs):
        UserProfile(kwargs['pk'])
        return (super(UserProfileUpdate, self).
                get(self, request, *args, **kwargs))

模型.py

from django.db import models
from django.contrib.auth.models import User

class UserProfile(models.Model):
    user = models.OneToOneField(User)

    name = models.CharField(max_length=30)
    website = models.URLField(blank=True)

    def __unicode__(self):
        return self.user.username

html:

{% extends 'blog/base.html' %}
{% block content %}
<h2>Edit {{ object.user.username }} Profile</h2>
<form method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <input type="submit" value="Update" />
</form>
{% endblock %}

最佳答案

你不能在这样的类上使用login_required装饰器。您需要使用method_decorator。在 Django 1.9+ 上,您可以修饰类:

from django.contrib.auth.decorators import login_required
from django.utils.decorators import method_decorator

@method_decorator(login_required, name='dispatch')
class UserProfileUpdate(UpdateView):
    model = UserProfile
   fields = ('name', 'website',)

另请查看此处 Django/python: 'function' object has no attribute 'as_view' @Alasdair 给出了一个例子和解释

关于python - 为什么显示此错误 'function' 对象没有属性 'as_view',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36680358/

相关文章:

django - 操作错误:初始同步数据库上没有这样的表

python - Django - 将值从模板传递到 View 函数

django-models - 如何使用 ModelSerializer 序列化 Model @property?

python - python中两个列表的排列映射

python - 使用 setup.py 和 wheels 安装依赖包

android - 将桌面和移动客户端连接到 Django 和 Sails MVC webframeworks

django-models - django 中的 Pandas to_sql : insert foreign key into DB

python - 标尺函数的迭代实现 (1,2,1,3,1,2,1,4,1,2,1,3,...)

python - 确定 TCP listen() 队列中当前积压的连接数

python - 结合 django-filter DateTimeFromToRangeFilter 和 DateTimeInput(datepicker)