Django网站设计常见问题处理(整理)

以下内容来源并整理于网络,并在实际应用过程中进行了汇总,希望能够帮到大家,后面有一段时间没有整理了,也欢迎大家交流、提问,并持续更新。
问题一、“Python”不是内部或外部命令
1.原因分析
1)问题一:python没有安装,概率比较小
2)问题二:没有将python路径配置到环境变量中。
2.解决办法:
1)问题一:安装python程序
python 3.7.0 X64下载地址:
https://www.python.org/ftp/python/3.7.0/python-3.7.0-amd64.exe
python python-3.7.4下载地址:
https://www.python.org/ftp/python/3.7.4/python-3.7.4.exe
安装完成后进行pip升级:
C:\python\test>python -m pip install --upgrade pip
2)问题二:
遇到这种现象通常是没有将python的安装路径添加到环境变量中。
在桌面上右键点击“此电脑”,选择“属性”,弹出系统界面选择“高级系统设置”,进入系统属性界面后在“高级”选项中选中“环境变量”。
1.在“系统变量”中找到变量Path,双击Path变量进入编辑界面。
2.在编辑环境变量对话框中点击“新建”,添加Python的安装路径,之后一直点确定即可。
3.再次进入cmd命令窗口,输入python命令则出现下图显示的内容,不会出现“不是内部或外部命令”的提示了;输入print(‘hello world’)也成功执行。到此问题已解决。

问题二、You are using pip version 19.0.3,however version 19.2.3 is available.
1.现象描述
由于python安装时版本较低,进行组建安装时提示pip版本过低,需要进行升级。
2.解决办法
进行pip升级
升级成功后显示如下,否则升级失败:

问题三、“Import django”不是内部或外部命令
1.解决办法:
Import命令必须在python提示符“>>>”下运行,需先输入python,并回车后才可操作

问题四、“django-admin”不是内部或外部命令
1.原因分析
1)问题一:没有将python路径配置到环境变量中。

2)问题二:Djngon没有安装
2.解决办法:
1)问题一:参考“Python”不是内部或外部命令
2)问题二:安装django程序
方法一:pip install django,建议用这个方法安装
注意:看到类似以下语句才表示安装成功
安装完毕后测试:
能看到版本号就正常了
方法二:手工安装,参考相关文档
https://www.cnblogs.com/hongten/p/hongten_django_install.html
问题五、SECRET_KEY setting must not be empty
1.原因分析:
将网上下载的mblog文件夹整个复制到test目录后,运行python manage.py runserver后系统提示
File “c:\python\test\16lesson\mblog\mblog\settings.py”, line 24, in
with open(’/etc/secret_key.txt’) as f:
FileNotFoundError: [Errno 2] No such file or directory: ‘/etc/secret_key.txt’
2.解决办法:
经检查,在setting.py存在两句话,
with open(’/etc/secret_key.txt’) as f:
SECRET_KEY = f.read().strip()
发现是在linux下的存储路径,试着注释掉后出现提示
raise ImproperlyConfigured(“The SECRET_KEY setting must not be empty.”)
django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.
后从系统中已有的应用setting.py中复制下面代码到本应用下
SECRET_KEY = ‘s-wj7#4s+&ne+vai%tb4u%i)+@cthb2hy_0v&s@w^5j5d3-=sa’
问题不再出现。
经查SECRET_KEY是在startproject时候生成的,由此怀疑是不是应用得手工建立一下才能正常使用。

问题六、No translation files found for default language zh-CN
1.现象描述:
File “C:\python\lib\site-packages\django\utils\translation\trans_real.py”, line 134, in init
raise IOError(“No translation files found for default language %s.” % settings.LANGUAGE_CODE)
OSError: No translation files found for default language zh-CN.

2.原因分析:
一般很多书上会出现
LANGUAGE_CODE = ‘zh-CN’
TIME_ZONE = ‘Asia/Beijing’
的设置语句,运行后会出现以下代码:

3.解决方案:

LANGUAGE_CODE = ‘zh-CN’
TIME_ZONE = ‘Asia/Beijing’
修改为:
LANGUAGE_CODE = ‘zh-hans’
TIME_ZONE = ‘Asia/Shanghai’

问题七、TabError: inconsistent use of tabs and spaces in indentation
1.现象描述:
File “c:\python\test\16lesson\mblog\mainsite\models.py”, line 13
ordering = (’-pub_date’,)
^
TabError: inconsistent use of tabs and spaces in indentation
2.原因分析:
在编写代码是交替使用了tab键和空格键用来控制缩进,此现象主要出现在复制别人代码时跟现有的页面不一致导致tab和空格混用出现。
3.解决方案:
调整复制语句的缩进方式,跟原有代码一致即可。

问题八、TemplateDoesNotExist
1.现象描述
找不到templates路径下的文件
2.解决办法
1)设置settings.py文件
TEMPLATES = [
{
‘BACKEND’: ‘django.template.backends.django.DjangoTemplates’,
‘DIRS’: [os.path.join(BASE_DIR,‘templates’),],
‘APP_DIRS’: False,
‘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’,
],
},
},
]

2)路径错误
页面设置路径不对,仔细检查代码,文件夹,路径的名称、设置是否一致

问题九、init() missing 1 required positional argument: 'on_delete’
1.现象描述
外键的删除没有设值。

2.解决办法
一般使用方式设置on_delete为null,
blog = models.ForeignKey(Blog,verbose_name=‘博客’,on_delete=models.SET_NULL)
user = models.OneToOneField(User,on_delete=models.CASCADE,unique=True)

问题十、NoReverseMatch
1.现象描述

2.解决办法
****url(r’^article-list/$’, views.article_list,name="article_list "),
注意:name="article_list "后面多了一个空格,导致提示错误,这种问题经常出现,注意观察。

(问题十一)ImportError: cannot import name ‘path’ from 'django.urls’
1.解决办法
django版本问题,需要将版本升级到2.0,不同版本要求有些区别。
pip install --upgrade django
pip install Django --upgrade

(问题十二)UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xce in position 149: invalid continuation byte
1.现象描述

2.解决办法
检查代码
经过对部分学生代码进行测试,发现在titles.html页面中不能输入中文字符,否则出现上述错误。
经网上查找,发现这篇文章描述了不同的页面,看上去都没有问题,但是用使用notepad++打开,查看下右下角的部位,会指示该文件是那种编码。Base.html与titles.html编码格式确实不一致,有可能是不同的创建方式引起的。https://blog.csdn.net/wang7807564/article/details/78164855

将base.html复制后改名成titles.html后,再输入代码,显示正常。

部分同学出现复制后仍然显示不正常的问题,用NoteAPP

(问题十三)127.0.0.1拒绝了我们的请求
用360浏览器进行程序调试,windows10自带的有时候会拒绝访问127.0.0.1

(问题十四)A server error occurred. Please contact the administrator.
1.解决办法:
关于django的站点管理,登录站点admin,如果出现标题这种问题,可能是以下原因:
1、本地化的时候,字母大小写没注意,正确的是LANGUAGE_CODE = 'zh-Hans’和TIME_ZONE = ‘Asia/Shanghai’,往上再分析是setting文件里的内容被改之后无法被解释器识别,所以以后碰见同类问题可以按照这个思路分析(然后如果再从新创建一个项目试试的话,如果还是报原来的错误,可能是之前那个项目没关)。
2、没有进行模型迁移,这样就不会生成项目的数据表,而登录站点就是进行数据表的操作,不进行迁移连表都没有,你又怎么能登录站点呢?

(问题十五)UnknownTimeZoneError:’ Asia/Shanghai’
1.现象描述

出现次问题主要是代码复制过程中加入了不必要的空格字符。

2.解决办法:
建议代码自己手工输入,而不是简单的复制、粘贴,及时发现隐患。另外建议使用能够提示字符的编辑工具进行代码编写,设置好显示空格与制表符的选项。

下图空格和tab键明显区分出来了

(问题十六)No such table
1.现象描述
访问admin中的博客内容出现如下提示

2.解决办法
第一次经检查代码,发现blog应用中model.py s已配置,views.py视图也已经编写好,但启动服务后却没有在admin登陆后看到blog的页面,检查后发现没有在./settings.py中的INSTALLED_APPS中增加blog应用
INSTALLED_APPS = [
‘django.contrib.admin’,
‘django.contrib.auth’,
‘django.contrib.contenttypes’,
‘django.contrib.sessions’,
‘django.contrib.messages’,
‘django.contrib.staticfiles’,
‘blog’,
]
从而导致admin应用没有显示。
修改代码后显示正常

但点击 Blog articles时提示上面所说错误。

后检查执行代码,发现在执行 python manage.py makemigrations时曾提示No changes detected。一开始以为表已经创建,只是提示没有变动,仔细分析后发现是由于没有引用blog应用导致相关的models.py创建时系统没有认出,根本没有执行相关操作引起的。
重新执行python manage.py makemigrations和python manage.py migrate命令后系统显示正常。

(问题十七)OSError:[WinError 123] 文件名、目录名或卷标语法不正确
1.现象描述
运行服务,提示如下:

python manage.py runserver

File “C:\python\lib\pathlib.py”, line 1140, in stat
return self._accessor.stat(self)
Error: [WinError 123] 文件名、目录名或卷标语法不正确。: ‘

2.解决方法

报错比较明显,第十六行你创建文件夹,文件夹名不符合Windows规范,包含了冒号

(问题十八)No module named ‘django.core.urlresolvers’
1.现象描述
提示如下:

2.解决办法

Django 2.0 把原来的 django.core.urlresolvers 包改为了 django.urls包,所以需要把原来的
from django.core.urlresolvers import reverse 改为 from django.urls import reverse

(问题十九)TypeError: as_view() takes 1 positional argument but 2 were given
1.现象描述
在设置用户登录时,原来的url设置是:
url(r’^login/ ′ , L o g i n V i e w . a s v i e w , n a m e = " u s e r l o g i n " ) , u r l ( r ′ n e w − l o g i n / ', LoginView.as_view, name="user_login"), url(r'^new-login/ ,LoginView.asview,name="userlogin"),url(rnewlogin/’, LoginView.as_view(template_name=‘account/login.html’),name=“login”),
这样导致访问http://127.0.0.1:8000/account/login/时出现上面错误,应该是as_view方法需要一个参数,但实际传递了两个,导致报错。
2.解决办法
修改URL配置,将第一个登录改为views.user_login登录方式,这样访问http://127.0.0.1:8000/account/login时不再报错。
url(r’^login/ ′ , v i e w s . u s e r l o g i n , n a m e = " u s e r l o g i n " ) , u r l ( r ′ n e w − l o g i n / ', views.user_login, name="user_login"), url(r'^new-login/ ,views.userlogin,name="userlogin"),url(rnewlogin/’, LoginView.as_view(template_name=‘account/login.html’),name=“login”),

(问题二十)module ‘django.contrib.auth.views’ has no attribute ‘password_change’
1.现象描述

(问题二十一)ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
第一需要你更新 pip 版本需要使用’pip install --upgrade pip’ command.
第二是 setuptools 版本太旧,所以出现以下问题Command “python setup.py egg_info” failed with error code 1 in /tmp/pip-build-G9yO9Z/tldr/,也是需要你更新
(一)使用“pip install—upgrade pip”命令进行pip版本升级。
[xiaokang@localhost ~]$ sudo pip install --upgrade pip
(二)使用“ pip install --upgrade setuptools”命令进行setuptools 版本升级。
[xiaokang@localhost ~]$ sudo pip install --upgrade setuptools

(问题二十二)安装依赖包requirements.txt
复制第一步下载的压缩包里的requirements.txt到项目xadmin文件夹同级目录下
执行命令:
pip install -r requirements.txt

(问题二十三)UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0xa4 in position 3444
README.rst这个文件的编码有问题,可以内容没什么重要的,可以直接到github上下载安装包,然后新建一个txt空文件,把文件名改成README.rst,替换原来的文件
下载安装包,下载zip压缩文件,下载地址:
https://github.com/sshwsfc/xadmin

下载安装包,执行安装命令:
pip install xadmin-django2.zip

(问题二十四)Xadmin添加用户小组件出错render() got an unexpected keyword argument 'renderer

原因:
render函数在django2.1上有变化

解决方案:
1.在Python终端输入命令help(‘xadmin’) 查看xadmin安装位置 得到如下输出
FILE
/root/anaconda3/envs/learndjango/lib/python3.5/site-packages/xadmin/init.py
2.进入xadmin安装路径,编辑xadmin/views/dashboard.py
36 #render() got an unexpected keyword argument ‘renderer’
37 #修改bug, 添加renderer
38 #by prism 2018/10/4
39 def render(self, name, value, attrs=None, renderer=None):
(问题二十五)TemplateSyntaxError - ‘staticfiles’ is not a registered tag library. Must be one of:
{% load staticfiles %} and {% load adminstatic %} were deprecated
in Django 2.1, and removed in
Django 3.0.

If you have any of the following in your html:

{% load staticfiles %}

{% load static from staticfiles %}

{% load adminstatic %}

You should replace the tag with simply:(仅所有.html文件)

{% load static %}
翻译,Django3.0以后,有些变化:用 {% load static %} 替换 {% load staticfiles %}

完整文档下载地址:https://download.csdn.net/download/luocaixitianjin/48727497

你可能感兴趣的