';非类型';对象没有属性';结束于';,django,python

';非类型';对象没有属性';结束于';,django,python,python,mysql,django,django-admin,image-uploading,Python,Mysql,Django,Django Admin,Image Uploading,我的项目结构类似于: /blog1(项目名称) /blog1/media/blog1/media /博客(应用程序名称) /博客/媒体 /静止的 /媒体 /静态/模板 我已经通过django管理面板上传了一张照片,但是当我从浏览器通过查看页面源查看图像时,它显示了一个错误: AttributeError at /blog/view/blog1/media/high-tech-snapshot_3.jpg 'NoneType' object has no attribute 'ends

我的项目结构类似于:

  • /blog1(项目名称)
    • /blog1/media/blog1/media
    • /博客(应用程序名称)
      • /博客/媒体
      • /静止的
      • /媒体
    • /静态/模板
我已经通过django管理面板上传了一张照片,但是当我从浏览器通过查看页面源查看图像时,它显示了一个错误:

AttributeError at /blog/view/blog1/media/high-tech-snapshot_3.jpg
'NoneType' object has no attribute 'endswith'
回溯:

Environment:


Request Method: GET
Request URL: http://127.0.0.1:8000/blog/view/blog1/media/high-tech-snapshot_3.jpg

Django Version: 1.6.5
Python Version: 2.7.6
Installed Applications:
('django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog',
'embed_video')
Installed Middleware:
('django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware')


Traceback:
File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response
112.                     response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/local/lib/python2.7/dist-packages/django/views/static.py" in serve
49.     fullpath = os.path.join(document_root, newpath)
File "/usr/lib/python2.7/posixpath.py" in join
77.         elif path == '' or path.endswith('/'):

Exception Type: AttributeError at /blog/view/blog1/media/high-tech-snapshot_3.jpg
Exception Value: 'NoneType' object has no attribute 'endswith'
以下是我在settings.py中的目录:

STATIC_URL = '/static/'
MEDIA_URL = '/media/blog1/media/'
MEDIA_ROOT = os.path.join(os.path.dirname(__file__), 'media')
以下是我的模型:

from django.db import models
from django.db.models import permalink
from embed_video.fields import EmbedVideoField

class Blog(models.Model):
    title = models.CharField(max_length=100, unique=True)
    slug = models.SlugField(max_length=100, unique=True)
    body = models.TextField()
    posted = models.DateTimeField(db_index=True, auto_now_add=True)
    category = models.ForeignKey('blog.Category')
    video = EmbedVideoField( blank=True)
    photo = models.ImageField(upload_to="blog1/media/", blank=True)

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

    @permalink
    def get_absolute_url(self):
        return ('view_blog_post', None, { 'slug': self.slug })
以下是我的视图.py:

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

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

    })
我的admin.py:

from django.contrib import admin
from blog.models import Blog
from embed_video.admin import AdminVideoMixin

class BlogAdmin(admin.ModelAdmin):
    exclude = ['posted']
    prepopulated_fields = {'slug': ('title',)}

    admin.site.register(Blog, BlogAdmin)
my URL.py:

from django.conf.urls import patterns, include, url
import os 
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
# Examples:
# url(r'^$', 'blog1.views.home', name='home'),
# url(r'^blog/', include('blog.urls')),
url(r'^admin/', include(admin.site.urls)),

url(r'^$', 'blog.views.index'),

url(
r'^blog/view/(?P<slug>[^\.]+).html', 
'blog.views.view_post', 
name='view_blog_post'),

url(r'^About/$', 'blog.views.about', name='about'),

url(
r'^blog/category/(?P<slug>[^\.]+).html', 
'blog.views.view_category', 
name='view_blog_category'),


url(r'^blog/view/blog1/media/(.*)$', 'django.views.static.serve',name ='media_url'),
)   
从django.conf.url导入模式,包括,url
导入操作系统
从django.contrib导入管理
admin.autodiscover()
urlpatterns=模式(“”,
#示例:
#url(r'^$'、'blog1.views.home',name='home'),
#url(r“^blog/”,包括('blog.url'),
url(r“^admin/”,包括(admin.site.url)),
url(r'^$','blog.views.index'),
网址(
r'^blog/view/(?P[^\.]+).html',
“blog.views.view_post”,
name='view\u blog\u post'),
url(r“^About/$”、“blog.views.About”、name='About'),
网址(
r'^blog/category/(?P[^\.]+).html',
'blog.views.view_category',
name='view\u blog\u category'),
url(r“^blog/view/blog1/media/(.*)$”、“django.views.static.service”、name='media\u url'),
)   
和my view_post.html:

{% block content %}
<h2>{{ post.title }}</h2>
<p>{{ post.body }}</p>
<img src="{{ post.photo }}"/>
 {% endblock %}   
{%block content%}
{{post.title}}
{{post.body}}

{%endblock%}
我肯定我犯了一些愚蠢的错误,如果有人知道,请帮助我


提前感谢,并对目录命名错误表示抱歉,我是django新手,不知道如何正确列出目录。

我通过在
设置.py中添加此项解决了类似问题

BASE_DIR = os.path.dirname(os.path.dirname(__file__))
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
另外,您可能还需要运行命令

python manage.py collectstatic

希望这有帮助

请包括对异常的完整回溯。@MartijnPieters我已经更新了详细信息,您现在可以看到了。请发布实际的URL.py,而不是随机的半行。@DanielRoseman已更新。