Django 1.11:模板渲染期间出错,__str__返回了非字符串(类型NoneType)

问题描述 投票:1回答:1

[Django版本:1.11,Python版本:3.5,我尝试遵循Django教程,但遇到无法解决的问题,无法删除此错误]

异常类型:/ posts / new /处的TypeError

异常值:__ str__返回了非字符串(类型NoneType)

enter image description here

[回溯

Environment:


Request Method: GET
Request URL: http://127.0.0.1:8000/posts/new/

Django Version: 1.11
Python Version: 3.6.6
Installed Applications:
   ['django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.humanize',
    'bootstrap3',
    'accounts',
    'groups',
    'posts']

Installed Middleware:
  ['django.middleware.security.SecurityMiddleware',
  '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']

Template error:
In template E:\Private\django_project\social_clone\simplesocial\templates     \base.html, error at line 10
 __str__ returned non-string (type NoneType)   1 : <!DOCTYPE html>
 2 : {% load staticfiles %}
 3 : <html>
 4 :   <head>
 5 :     <meta charset="utf-8">
 6 :     <title>Egy Social</title>
 7 :     <!-- Latest compiled and minified CSS -->
 8 : 
 9 : 
 10 :     <link rel="stylesheet" href="https: //maxcdn.bootstrapcdn.com /bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
 11 : 
 12 : 
 13 :         <!-- Optional theme -->
 14 : 
 15 :     <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">
 16 :         <!-- Latest compiled and minified JavaScript -->
 17 :     <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
 18 :     <link href="https://fonts.googleapis.com/css?family=Montserrat" rel="stylesheet">
 19 :     <link rel="stylesheet" href="{% static 'simplesocial/css/master.css'%}">
 20 :   </head>


 Traceback:

 File "C:\Users\Ahmed-Fathi\Anaconda2\envs\myDjangoEnv\lib\site-packages\django\core\handlers\exception.py" in inner
 41.response = get_response(request)

 File "C:\Users\Ahmed-Fathi\Anaconda2\envs\myDjangoEnv\lib\site-packages\django\core\handlers\base.py" in _get_response
 217.response = self.process_exception_by_middleware(e, request)

 File "C:\Users\Ahmed-Fathi\Anaconda2\envs\myDjangoEnv\lib\site-packages\django\core\handlers\base.py" in _get_response
 215.               response = response.render()

 File "C:\Users\Ahmed-Fathi\Anaconda2\envs\myDjangoEnv\lib\site-packages\django\template\response.py" in render
 107.             
  self.content = self.rendered_content

 File "C:\Users\Ahmed-Fathi\Anaconda2\envs\myDjangoEnv\lib\site-packages\django\template\response.py" in rendered_content
 84.         
 content = template.render(context, self._request)

 File "C:\Users\Ahmed-Fathi\Anaconda2\envs\myDjangoEnv\lib\site-packages\django\template\backends\django.py" in render
 66.            
  return self.template.render(context)

 File "C:\Users\Ahmed-Fathi\Anaconda2\envs\myDjangoEnv\lib\site-packages\django\template\base.py" in render
 207.                 
 return self._render(context)

 File "C:\Users\Ahmed-Fathi\Anaconda2\envs\myDjangoEnv\lib\site-packages\django\template\base.py" in _render
 199.   
  return self.nodelist.render(context)

 File "C:\Users\Ahmed-Fathi\Anaconda2\envs\myDjangoEnv\lib\site-packages\django\template\base.py" in render
  990.          
   bit = node.render_annotated(context)

 File "C:\Users\Ahmed-Fathi\Anaconda2\envs\myDjangoEnv\lib\site-packages\django\template\base.py" in render_annotated
  957.         
 return self.render(context)

 File "C:\Users\Ahmed-Fathi\Anaconda2\envs\myDjangoEnv\lib\site-packages\django\template\loader_tags.py" in render
  177.       
  return compiled_parent._render(context)

 File "C:\Users\Ahmed-Fathi\Anaconda2\envs\myDjangoEnv\lib\site-packages\django\template\base.py" in _render
  199.     
 return self.nodelist.render(context)

 File "C:\Users\Ahmed-Fathi\Anaconda2\envs\myDjangoEnv\lib\site-packages\django\template\base.py" in render
  990.         
    bit = node.render_annotated(context)

 File "C:\Users\Ahmed-Fathi\Anaconda2\envs\myDjangoEnv\lib\site-packages\django\template\base.py" in render_annotated
  957.       
  return self.render(context)

 File "C:\Users\Ahmed-Fathi\Anaconda2\envs\myDjangoEnv\lib\site-packages\django\template\loader_tags.py" in render
   177.       
  return compiled_parent._render(context)

  File "C:\Users\Ahmed-Fathi\Anaconda2\envs\myDjangoEnv\lib\site-packages\django\template\base.py" in _render
   199.      
  return self.nodelist.render(context)

  File "C:\Users\Ahmed-Fathi\Anaconda2\envs\myDjangoEnv\lib\site-packages\django\template\base.py" in render
   990.        
    bit = node.render_annotated(context)

 File "C:\Users\Ahmed-Fathi\Anaconda2\envs\myDjangoEnv\lib\site-packages\django\template\base.py" in render_annotated
   957.        
 return self.render(context)

 File "C:\Users\Ahmed-Fathi\Anaconda2\envs\myDjangoEnv\lib\site-packages\django\template\loader_tags.py" in render
   72.          
   result = block.nodelist.render(context)

 File "C:\Users\Ahmed-Fathi\Anaconda2\envs\myDjangoEnv\lib\site-packages\django\template\base.py" in render
   990.          
   bit = node.render_annotated(context)

 File "C:\Users\Ahmed-Fathi\Anaconda2\envs\myDjangoEnv\lib\site-packages\django\template\base.py" in render_annotated
  957.       
  return self.render(context)

 File "C:\Users\Ahmed-Fathi\Anaconda2\envs\myDjangoEnv\lib\site-packages\django\template\loader_tags.py" in render
  72.         
  result = block.nodelist.render(context)

 File "C:\Users\Ahmed-Fathi\Anaconda2\envs\myDjangoEnv\lib\site-packages\django\template\base.py" in render
  990.         
  bit = node.render_annotated(context)

 File "C:\Users\Ahmed-Fathi\Anaconda2\envs\myDjangoEnv\lib\site-packages\django\template\base.py" in render_annotated
 957.         
 return self.render(context)

 File "C:\Users\Ahmed-Fathi\Anaconda2\envs\myDjangoEnv\lib\site-packages\django\template\library.py" in render
  203.   
  output = self.func(*resolved_args, **resolved_kwargs)

 File "C:\Users\Ahmed-Fathi\Anaconda2\envs\myDjangoEnv\lib\site-packages\bootstrap3\templatetags\bootstrap3.py" in bootstrap_form
  338.  
  return render_form(*args, **kwargs)

 File "C:\Users\Ahmed-Fathi\Anaconda2\envs\myDjangoEnv\lib\site-packages\bootstrap3\forms.py" in render_form
  53.
 return renderer_cls(form, **kwargs).render()

 File "C:\Users\Ahmed-Fathi\Anaconda2\envs\myDjangoEnv\lib\site-packages\bootstrap3\renderers.py" in render
   87.  
   return mark_safe(self._render())

 File "C:\Users\Ahmed-Fathi\Anaconda2\envs\myDjangoEnv\lib\site-packages\bootstrap3\renderers.py" in _render
  230.  
   return self.render_errors(self.error_types) + self.render_fields()

 File "C:\Users\Ahmed-Fathi\Anaconda2\envs\myDjangoEnv\lib\site-packages\bootstrap3\renderers.py" in render_fields
   194.       
      bound_css_class=self.bound_css_class,

 File "C:\Users\Ahmed-Fathi\Anaconda2\envs\myDjangoEnv\lib\site-packages\bootstrap3\forms.py" in render_field
 69.  
 return renderer_cls(field, **kwargs).render()

 File "C:\Users\Ahmed-Fathi\Anaconda2\envs\myDjangoEnv\lib\site-packages\bootstrap3\renderers.py" in render
  87.         return mark_safe(self._render())

 File "C:\Users\Ahmed-Fathi\Anaconda2\envs\myDjangoEnv\lib\site-packages\bootstrap3\renderers.py" in _render
  551.         html = self.field.as_widget(attrs=self.widget.attrs)

 File "C:\Users\Ahmed-Fathi\Anaconda2\envs\myDjangoEnv\lib\site-packages\django\forms\boundfield.py" in as_widget
   120.             **kwargs

 File "C:\Users\Ahmed-Fathi\Anaconda2\envs\myDjangoEnv\lib\site-packages\django\forms\widgets.py" in render
  220.         context = self.get_context(name, value, attrs)

 File "C:\Users\Ahmed-Fathi\Anaconda2\envs\myDjangoEnv\lib\site-packages\django\forms\widgets.py" in get_context
 665.         context = super(Select, self).get_context(name, value, attrs)

 File "C:\Users\Ahmed-Fathi\Anaconda2\envs\myDjangoEnv\lib\site-packages\django\forms\widgets.py" in get_context
  627.         context['widget']['optgroups'] = self.optgroups(name, context['widget']['value'], attrs)

  File "C:\Users\Ahmed-Fathi\Anaconda2\envs\myDjangoEnv\lib\site-packages\django\forms\widgets.py" in optgroups
  574.         for option_value, option_label in chain(self.choices):

  File "C:\Users\Ahmed-Fathi\Anaconda2\envs\myDjangoEnv\lib\site-packages\django\forms\models.py" in __iter__
  1118.             yield self.choice(obj)

  File "C:\Users\Ahmed-Fathi\Anaconda2\envs\myDjangoEnv\lib\site-packages\django\forms\models.py" in choice
  1124.         return (self.field.prepare_value(obj), self.field.label_from_instance(obj))

  File "C:\Users\Ahmed-Fathi\Anaconda2\envs\myDjangoEnv\lib\site-packages\django\forms\models.py" in label_from_instance
  1189.         return force_text(obj)

  File "C:\Users\Ahmed-Fathi\Anaconda2\envs\myDjangoEnv\lib\site-packages\django\utils\encoding.py" in force_text
  76.                     s = six.text_type(s)

 Exception Type: TypeError at /posts/new/
 Exception Value: __str__ returned non-string (type NoneType)

这是我的models.py文件

enter code here
from django.conf import settings
from django.core.urlresolvers import reverse
from django.db import models

import misaka

from groups.models import  Group

from django.contrib.auth import get_user_model
User = get_user_model()


class Post(models.Model):
    user = models.ForeignKey(User, related_name="posts")
    created_at = models.DateTimeField(auto_now=True)
    message = models.TextField()
    message_html = models.TextField(editable=False)
    group = models.ForeignKey(Group,  
    related_name="posts",null=True,blank=True)

    def __str__(self):
        return self.message

    def save(self, *args, **kwargs):
        self.message_html = misaka.html(self.message)
        super().save(*args, **kwargs)

    def get_absolute_url(self):
        return reverse(
             "posts:single",
              kwargs={
                 "username": self.user.username,
                 "pk": self.pk
                      }
                    )

    class Meta:
         ordering = ["-created_at"]
         unique_together = ["user", "message"]

这就是我的帖子应用程序的urls.py

from django.conf.urls import url

from . import views

app_name='posts'

urlpatterns = [
    url(r"^$", views.PostList.as_view(), name="all"),
    url(r"new/$", views.CreatePost.as_view(), name="create"),
    url(r"by/(?P<username>[-\w]+)/$"
           ,views.UserPosts.as_view(),name="for_user"),
    url(r"by/(?P<username>[-\w]+)/(?P<pk>\d+)/$"
            ,views.PostDetail.as_view(),name="single"),
    url(r"delete/(?P<pk>\d+)/$",views.DeletePost.as_view(),name="delete"),
    ]

settings.py

enter code here

import os

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
TEMPLATE_DIR = os.path.join(BASE_DIR,'templates')

SECRET_KEY = '(5qpl&b-b48^jszl@nz02#lgbw%tp(o)_wb!)b&k(j9*kueh@&'

DEBUG = True

ALLOWED_HOSTS = []
INSTALLED_APPS = [
   'django.contrib.admin',
   'django.contrib.auth',
   'django.contrib.contenttypes',
   'django.contrib.sessions',
   'django.contrib.messages',
   'django.contrib.staticfiles',
   'django.contrib.humanize',
   'bootstrap3',
   'accounts',
   'groups',
   'posts',
    ]

MIDDLEWARE = [
   'django.middleware.security.SecurityMiddleware',
   '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',
      ]

ROOT_URLCONF = 'simplesocial.urls'

TEMPLATES = [
 {
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [TEMPLATE_DIR,],
    'APP_DIRS': True,
    'OPTIONS': {
        'context_processors': [
            'django.template.context_processors.debug',
            'django.template.context_processors.request',
            'django.contrib.auth.context_processors.auth',
            'django.contrib.messages.context_processors.messages',
         ],
      },
    },
 ]

WSGI_APPLICATION = 'simplesocial.wsgi.application'
DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.sqlite3',
    'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
  }

AUTH_PASSWORD_VALIDATORS = [
  {
    'NAME':
      'django.contrib.auth.password_validation.
        UserAttributeSimilarityValidator',
        },
         {
    'NAME': 'django.contrib.auth.password_validation.
       MinimumLengthValidator',
         },
        {
    'NAME': 'django.contrib.auth.password_validation.
          CommonPasswordValidator',
         },
          {
    'NAME': 'django.contrib.auth.password_validation.
          NumericPasswordValidator',
          },
          ]
enter code here

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True
STATIC_URL = '/static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]

LOGIN_REDIRECT_URL = "test"
LOGOUT_REDIRECT_URL = "thanks"

我用google搜索,但没找到]]

[Django版本:1.11 Python版本:3.5我正在尝试遵循Django教程,但是我有一个无法解决的问题,我无法删除此错误异常类型:/ posts / new / ...的TypeError]

python django django-templates
1个回答
0
投票

我也遇到相同的错误。您能够解决此问题吗?enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.