Django BUG记录

1. app下的models中某个数据库字段错误(比如少了个vbname=而直接写了个“xxx”),重新makemigrations 再migrate后出现问题:

目前已知的几种方法:
1)每个app下的migrations目录中会有000x.xxxxxx这样的文件,文件记录了每次models的修改,可以根据其中的内容分析;
2)尝试删除每个创建的app下的migrations目录,重新makemigrations;
3)如果表还是未生成,目前可行的是备份数据库后,删除数据库,再重建数据库,makemigrations -> migrate后 导入备份数据;
4)最后最后,首先分析出问题,不是表重复的话不要急着删除数据库的表。

2.no model named ‘xxxx’:

目前我遇到的情况是,我在虚拟环境中工作,但是cmd中没有进入虚拟环境操作,所以在执行xx.py时会提示这样的错误。

另一方面就是,如果在使用pycharm时在IDE的编辑器中更改了路径或者目录,那么在setting下注意insert或者append相应的路径,该问题请参考https://my.oschina.net/leejun2005/blog/109679有更为详细的解答。

例如:

import os
import sys

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
**sys.path.insert(0, os.path.join(BASE_DIR, "xxx"))  #xxx为你的目录名**

3.pip install xadmin 和从github上克隆下来的版本不一致:

最好是从github上克隆下最新的版本,截止到2017/07/23目前pip下来的xadmin会出现 Unicode 解码错误,来源于一个README文件,搜到的几个答案是推荐删除该文件,说是此文件不重要。但是本人没有删除而是直接pip install xadmin-master.tar(github克隆下来的),是没有报错的。

在此之外如果想要在xadmin源码上进行更改,可以将克隆下来的压缩包解压后,把内部的xadmin目录拷贝到自己的工程下,然后卸载之前安装的xadmin(如果之前install了),配置好url即可使用。

手动安装命令:
xadmin 目录下 python install setup.py

# 如果xadmin拷贝到了某个目录而非根目录下,pycharm中mark一下目录,添加好路径后直接使用下方也是可行的
import xadmin

urlpatterns = [
    url(r'^xadmin/', xadmin.site.urls),
]

4.在django的xadmin里,当想回显某个成员的单项信息(而不是XXX object):
python2.x中,可以在model里重载 unicode

    def __unicode__(self):
        return self.xxx

这个在python3.x(目前使用3.6发现的)不起作用,这时候可以重载str:

    def __str__(self):
        return self.xxx

5.setting中配置上传文件路径的问题:

一开始我觉得问题是:

因为之前配置static的时候os.path.join(BASE_DIR, “static”) 中的”static”并没有给/,但是无碍静态文件的加载,所以在设置文件上传时,如果 os.path.join(BASE_DIR, ‘media/’) 中的 ‘media/’ 不加/会报错,所以这里需要加/
…………………………

**但是仔细观察会发现,os.path.join(BASE_DIR, ‘media/’)中media用了单引号,而os.path.join(BASE_DIR, “static”)中的static用了双引号,问题其实在这里,所以如果用单引号则需要加 /
下面是两种可行方式的例子:**

STATIC_URL = '/static/'
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static"),
)

MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
MEDIA_URL = '/media/'

6.使用uwsgi + Nginx代理静态资源时一直显示欢迎页/无法显示静态资源:
1)首先检查/etc/nginx/conf 下的xxx.conf文件(nginx配置文件)里对项目路径有没有添加
root 项目路径(绝对);
2)尝试换用端口,比如在server 127.0.0.1 80 切换成 81;
3)在默认的nginx.conf文件中注释掉引用default资源的代码,并remove相关文件(度娘很多这个操作);
4)uswgi.ini左对齐不要尝试缩进。

7.生成 requirements.txt 文件以备换用机器时快速部署Django环境
注意:前提是virtualenv已经装好,环境名起为A,B
场景:在A机器做的项目,想挪到B机器上继续工作

workon A
(A) $ pip freeze >requirements.txt

这时候会在目录下生成一个requirements.txt文件,然后拷贝到B机器的环境下:

workon B
(B) $ pip install -r requirements.txt

8 an explicit app_label and isn’t in an application in INSTALLED_APPS. 错误

检查一下是否是因为工程已经登录,而后台admin还处于未登录状态,目前把工程中的登录状态注销再访问admin就不会有问题了。

9 在pycharm中django无法加载的解决办法

在pycharm中打开别人的项目时,编辑器中经常出现django模块无法加载的提示,但是系统中已经安装django了,只需要修改下面的设置即可解决:

Settings -> Project Settings -> Python Integrated Tools,右边的第一个选项 Package requirements file 留空即可

如果Run里没有Django Server,创建一个就行了:

1 首先在Pycharm中打开你的Django项目,点击上面编辑栏上的run->Edit Configurations;
2 选择 +;
3 增加一个Django server ,默认OK就行;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值