python - 属性错误 : 'function' object has no attribute 'views'

标签 python django python-3.x django-templates django-views

你好,我正在学习用于 Web 应用程序的 Django 框架

我正在尝试根据教程构建基本博客

我被错误困住了:

AttributeError is telling me that  'function' object has no attribute 'views'.

我不知道我的文件哪里有问题,所以我将在此处包含我的文件的一些代码。

有我的urls.py

from django.conf.urls import url
from django.contrib import admin
import WarblerTest


urlpatterns = {
    url(r'^admin/', admin.site.urls),
    (r'^$', WarblerTest.blog.views.index),
    url(
        r'^blog/view/(?P<slug>[^\.]+).html',
        WarblerTest.blog.views.view_post,
        name='view_blog_post'),
    url(
        r'^blog/category/(?P<slug>[^\.]+).html',
        WarblerTest.blog.views.view_category,
        name='view_blog_category'),
}

有我的views.py

from django.shortcuts import render
from blog.models import Blog, Category
from django.shortcuts import render_to_response, get_object_or_404


def index(request):
    return render_to_response('index.html', {
        'categories': Category.objects.all(),
        'posts': Blog.objects.all()[:5]
    })


def view_post(request, slug):
    return render_to_response('view_post.html', {
        'post': get_object_or_404(Blog, slug=slug)
    })


def view_category(request, slug):
    category = get_object_or_404(Category, slug=slug)
    return render_to_response('view_category.html', {
        'category': category,
        'posts': Blog.objects.filter(category=category)[:5]
    })

有我的models.py

from django.db import models
from django.db.models import permalink

# Create your models here.

class Blog(models.Model):
    title = models.CharField(max_length = 100,unique = True)
    slug = models.CharField(max_length = 100,unique = True)
    body = models.TextField()
    posted = models.DateField(db_index = True,auto_now_add = True)

    def __unicode__(self):
        return '%s' % self.title

    @permalink
    def get_absolute_url(self):
        return ('view-blog-post',None, {'slug' : self.slug})

class Category(models.Model):
    title = models.CharField(max_length = 100,db_index = True)
    slug = models.SlugField(max_length = 100,db_index = True)

    def __unicode__(self):
        return '%s' % self.title

    @permalink
    def get_absolute_url(self):
        return ('view_blog_category', None, { 'slug': self.slug })

还有我的回溯错误

Unhandled exception in thread started by <function check_errors.<locals>.wrapper at 0x03853B28>
Traceback (most recent call last):
  File "C:\Users\Tornike\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\utils\autoreload.py", line 2
26, in wrapper
    fn(*args, **kwargs)
  File "C:\Users\Tornike\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\core\management\commands\run
server.py", line 121, in inner_run
    self.check(display_num_errors=True)
  File "C:\Users\Tornike\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\core\management\base.py", li
ne 374, in check
    include_deployment_checks=include_deployment_checks,
  File "C:\Users\Tornike\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\core\management\base.py", li
ne 361, in _run_checks
    return checks.run_checks(**kwargs)
  File "C:\Users\Tornike\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\core\checks\registry.py", li
ne 81, in run_checks
    new_errors = check(app_configs=app_configs)
  File "C:\Users\Tornike\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\core\checks\urls.py", line 1
4, in check_url_config
    return check_resolver(resolver)
  File "C:\Users\Tornike\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\core\checks\urls.py", line 2
4, in check_resolver
    for pattern in resolver.url_patterns:
  File "C:\Users\Tornike\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\utils\functional.py", line 3
5, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "C:\Users\Tornike\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\urls\resolvers.py", line 313
, in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
  File "C:\Users\Tornike\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\utils\functional.py", line 3
5, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File "C:\Users\Tornike\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\urls\resolvers.py", line 306
, in urlconf_module
    return import_module(self.urlconf_name)
  File "C:\Users\Tornike\AppData\Local\Programs\Python\Python36-32\lib\importlib\__init__.py", line 126, in import_modul
e
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 978, in _gcd_import
  File "<frozen importlib._bootstrap>", line 961, in _find_and_load
  File "<frozen importlib._bootstrap>", line 950, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 655, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 205, in _call_with_frames_removed
  File "C:\Users\Tornike\Desktop\WarblerTest\WarblerTest\urls.py", line 8, in <module>
    (r'^$', WarblerTest.blog.views.index),
AttributeError: 'function' object has no attribute 'views'

最佳答案

在您的主项目 urls.py 中,删除 import WarblerTest 导入并将其替换为 from blogs import views

然后更新您的 url 模式以使用您导入的 views 模块。请注意,urlpatterns 应该是一个 list(方括号 [...] 而不是花括号 {...} 正如你所拥有的。每个项目都应该是 url(...) 而不是元组 (...) 以避免在 Django 1.10+ 中出现问题。

from blogs import views

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^$', views.index),
    url(r'^blog/view/(?P<slug>[^\.]+).html', views.view_post, name='view_blog_post'),
    url(r'^blog/category/(?P<slug>[^\.]+).html', views.view_category, name='view_blog_category'),
]

关于python - 属性错误 : 'function' object has no attribute 'views' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42956867/

相关文章:

python - 打开上传的 CSV 文件时出现类型错误

python - Django 从 View 和嵌套 POST 调用 API

python - raise_(​​) 函数被忽略

python - sympy:使用 Wild 符号作为函数的输入

python-3.x - python3.x - 基于整数标志的选择性算术

python - 如何在 Python 中获取 Excel 单元格属性

python - 在打印变量类型时,如何在 Tensorflow 中获得 pretty-print 结果?

python - Boto 上传到 S3 不适用于某些文件类型

python - 同步数据采集的硬件中断

python - 将 ctypes 与 typedef 一起使用