【问题标题】:Django UnicodeDecode ErrorDjango UnicodeDecodeError
【发布时间】:2017-05-25 13:20:02
【问题描述】:

首先,我已经尝试了所有可以在 SO 和 google 上找到的方法,但都没有奏效,所以在这里询问。

我正在学习django并做一个测试项目。一切进展顺利,但在创建superuser 后,当我尝试登录管理面板时,它显示UnicodeDecodeError。我尝试了几种方法,但不断收到错误。我在带有 python 3 的 windows 7 32 位上使用django 1.11
我创建了一个应用程序students 并注册了该应用程序。然后运行migrate

students/models.py

from django.db import models

class Students(models.Model):
    roll = models.IntegerField(primary_key=True)
    name = models.CharField(max_length=200)
    dept = models.CharField(max_length=200)
    inst = models.CharField(max_length=200)

    def __str__(self):
        return self.name + "("+ self.dept + ")"

students/views.py

from django.shortcuts import render
from django.views.generic.base import View
from students.models import Students

class StudentListView(View):
    def get(self,request):
        students = Students.objects.all()
        return render(request,'students/index.html',{'students':students})

urls.py

from django.conf.urls import url
from django.contrib import admin
from students.views import StudentListView

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^students/',StudentListView.as_view()),
]

有人可以帮我解决这个问题吗?

编辑:
这是traceback

(VE) F:\Virtual Environments\VE\djangogirls\myprojects>python manage.py runserver
Performing system checks...

System check identified no issues (0 silenced).
May 25, 2017 - 19:23:58
Django version 1.11.1, using settings 'myprojects.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
[25/May/2017 19:23:59] "GET /admin/ HTTP/1.1" 302 0
Internal Server Error: /admin/login/
Traceback (most recent call last):
  File "F:\VIRTUA~1\VE\lib\site-packages\django\core\handlers\exception.py", lin
e 41, in inner
    response = get_response(request)
  File "F:\VIRTUA~1\VE\lib\site-packages\django\core\handlers\base.py", line 217
, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "F:\VIRTUA~1\VE\lib\site-packages\django\core\handlers\base.py", line 215
, in _get_response
    response = response.render()
  File "F:\VIRTUA~1\VE\lib\site-packages\django\template\response.py", line 107,
 in render
    self.content = self.rendered_content
  File "F:\VIRTUA~1\VE\lib\site-packages\django\template\response.py", line 82,
in rendered_content
    template = self.resolve_template(self.template_name)
  File "F:\VIRTUA~1\VE\lib\site-packages\django\template\response.py", line 64,
in resolve_template
    return select_template(template, using=self.using)
  File "F:\VIRTUA~1\VE\lib\site-packages\django\template\loader.py", line 48, in
 select_template
    return engine.get_template(template_name)
  File "F:\VIRTUA~1\VE\lib\site-packages\django\template\backends\django.py", li
ne 39, in get_template
    return Template(self.engine.get_template(template_name), self)
  File "F:\VIRTUA~1\VE\lib\site-packages\django\template\engine.py", line 162, i
n get_template
    template, origin = self.find_template(template_name)
  File "F:\VIRTUA~1\VE\lib\site-packages\django\template\engine.py", line 136, i
n find_template
    name, template_dirs=dirs, skip=skip,
  File "F:\VIRTUA~1\VE\lib\site-packages\django\template\loaders\base.py", line
38, in get_template
    contents = self.get_contents(origin)
  File "F:\VIRTUA~1\VE\lib\site-packages\django\template\loaders\filesystem.py",
 line 29, in get_contents
    return fp.read()
  File "F:\VIRTUA~1\VE\lib\codecs.py", line 321, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x98 in position 402714: inv
alid start byte
[25/May/2017 19:24:01] "GET /admin/login/?next=/admin/ HTTP/1.1" 500 114793

【问题讨论】:

  • @Alasdair 我已经更新了代码。请看一看。
  • 您是否使用任何孟加拉语名称或其他名称创建了超级用户?你是如何创建用户的?尝试删除用户并使用'./manage.py createsuperuser'创建新的超级用户并再次登录
  • @ruddra 我使用python manage.py createsuperuser 命令创建了超级用户,用户名是英文。
  • 您最终解决了这个问题吗?

标签: python django django-models


【解决方案1】:

在模型文件和视图文件的顶部添加这些行

# -*- encoding: utf-8 -*-

from __future__ import unicode_literals

同样,设置 str 方法相等:

def __str__(self):
   return "(%s)" % self.name

现在,再次尝试运行。

【讨论】:

    【解决方案2】:

    五月this帮助。

    def __unicode__(self):
        return u"{} ({})".format(self.name, self.dept)
    

    【讨论】:

      【解决方案3】:

      尝试编码为 utf-8。

      # -*- encoding: utf-8 -*-
      from __future__ import unicode_literals
      
      
      def __unicode__(self):
          return u"{} ({})".format(self.name, self.dept)
      

      但是,这似乎是一个特定于环境的问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-09-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-23
        • 2013-09-27
        相关资源
        最近更新 更多