python3.5 django1.10 demo 遇见的问题

来源:互联网 发布:ie8 href javascript 编辑:程序博客网 时间:2024/05/07 01:50

1.django新建项目时遇见了关于_sqlite3的问题:

  File "/usr/local/lib/python3.5/site-packages/django/db/backends/sqlite3/base.py", line 39, in <module>    raise ImproperlyConfigured("Error loading either pysqlite2 or sqlite3 modules (tried in that order): %s" % exc)django.core.exceptions.ImproperlyConfigured: Error loading either pysqlite2 or sqlite3 modules (tried in that order): No module named '_sqlite3'

解决:
yum install sqlite-devel.x86_64
然后重新编译python

2.启动项目时报以下信息:
You have 13 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run ‘python manage.py migrate’ to apply them.
解决,描述得很清楚,运行以下命令就ok:
python manage.py migrate

3.访问时报错:
Invalid HTTP_HOST header: ‘xxx.xxx.xx.xxx:8000’. You may need to add ‘xxx.xxx.xx.xxx to ALLOWED_HOSTS.
在setting.py中把xxx.xxx.xx.xxx 加入到ALLOWED_HOSTS中就ok了

4.连接mysql的时候报错

 return _bootstrap._gcd_import(name[level:], package, level) File "/usr/local/lib/python3.5/site-packages/django/db/backends/mysql/base.py", line 28, in <module>    raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e)django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named 'MySQLdb'

解决:
方法一(失败了):
首先安装mysql模块 pip3 install pymysql3
然后修改init.py文件加入:
import pymysql
pymysql.install_as_MySQLdb()

但是使用的时候发现又报错:

 return _bootstrap._gcd_import(name[level:], package, level) File "/usr/local/lib/python3.5/site-packages/django/db/backends/mysql/base.py", line 31, in <module>    from MySQLdb.converters import Thing2Literal, conversions       # isort:skipImportError: cannot import name 'Thing2Literal'

查了一下应该是pymysql3的版本不对
使用以下命令看版本信息:
python3 -c ‘import pymysql; print(pymysql.version)’
发现是0.5版的,最新版应该是0.7.9

方法二:
先卸载: pip3 uninstall pymysql3
然后:

$:wget   https://pypi.python.org/packages/a4/c4/c15457f261fda9839637de044eca9b6da8f55503183fe887523801b85701/PyMySQL-0.7.9.tar.gz#md5=bf82311ac2df4c43adad003a8c805b90$:tar zxvf PyMySQL-0.7.9.tar.gz$:cd PyMySQL-0.7.9$:python3 setup.py install

5.使用数据库使用命令:python3 manage.py syncdb时报Unknown command: ‘syncdb’
解决:django1.9以后使用:python3 manage.py migrate

6.数据库表已存在,反向生成model.py
python manage.py inspectdb>models.py
提示:这种一般是在初始化项目之前做,不然的话会把django的系统表也会给反向生出来

7.两个表之间存在多个外键的时候,生成model之后,会报错:
HINT: Add or change a related_name argument to the definition for xxx or xxx]
解决办法:设置related_name

  trigger = models.ForeignKey('Opt',models.DO_NOTHING,related_name='template_trigger_opt')    trigger_params = models.CharField(max_length=45, blank=True, null=True)    action = models.ForeignKey('Opt', models.DO_NOTHING,related_name='template_action_opt')

8.admin管理工具中生成的界面中,下拉菜单显示成Object
解决办法,修改model.py:
class User(models.Model):
email = models.CharField(max_length=45)
password = models.CharField(max_length=45)
name = models.CharField(max_length=45, blank=True, null=True)

后面加上
def str(self):
return self.name

如果 self.name 有可能为null,则加上str,不然会报类型转换异常:
def str(self):
return str(self.name)

9.admin管理工具中生成的界面,显示多个字段
解决办法:
修改admin.py
添加如下代码
class UserAdmin(admin.ModelAdmin):
list_display = (‘name’,’email’, ‘sex’,’city’,ctime’) # list
admin.site.register(User,UserAdmin)
注:一个model只能注册一次

0 0
原创粉丝点击