版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m0_37886429/article/details/83540314
python版本:3.6.5
Django版本:2.0.5 (进入python交互模式,import django ; print(django.VERSION) )
使用pycharm创建一个项目(study01)后,应用为app,在配置文件中配置使用mysql数据库后,启动的时候报错了,错误信息如下:
import MySQLdb as Database
ModuleNotFoundError: No module named 'MySQLdb'
在python3以上版本中,MySQLdb模块已经废弃了,主要是pymysql模块连接数据库,解决办法:
在项目目录和setting.py同级的目录下的 __init__.py文件中添加以下内容即可。
import pymysql
pymysql.install_as_MySQLdb()
扩展
1、在setting中配置django使用mysql数据库
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME':'test',
'USER': 'root',
'PASSWORD':'password123',
'PORT':3306,
'HOST':'192.168.16.191',
'CHARSET':'utf8',
}
}
参考:https://docs.djangoproject.com/en/2.0/ref/settings/#databases
2、pip freeze 查看 pymysql 版本
>>> import pymysql
>>> print(pymysql.__version__)
3、在开发过程中,由于数据库表的重新设计,需要删除原表,并通过Django的ORM功能重新同步表。
问题:从数据库里面删除了表,后来再注释了models中的类,重新同步,报错
解决:
python manage.py makemigrations
python manage.py migrate --fake #主要是 --fake 这个参数
4、静态文件配置
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'statics'),
)
5、admin的静态文件配置
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
同步admin静态文件命令
$ python admin.py collectstatic
备注: 在配置系统静态文件和admin静态文件的时候,两个目录不能一样,否则会报错
6、缓存配置
请参考:https://blog.csdn.net/m0_37886429/article/details/78027164
7、django使用中文
在配置文件settings.py中配置
#LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'zh-Hans' #desplay chinese
TIME_ZONE = 'Asia/Shanghai'
8、每一次调用query对象;显示对应的sql语句
在配置文件settings.py中配置
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'console':{
'level':'DEBUG',
'class':'logging.StreamHandler',
},
},
'loggers': {
'django.db.backends': {
'handlers': ['console'],
'propagate': True,
'level':'DEBUG',
},
}
}
9、django使用redis缓存
在配置文件settings.py中配置
CACHES = {
'default': {
'BACKEND': 'redis_cache.cache.RedisCache',
'LOCATION': '127.0.0.1:6379',
'db':14,
"OPTIONS": {
"CLIENT_CLASS": "redis_cache.client.DefaultClient",
},
},
}
REDIS_TIMEOUT=7*24*60*60
CUBES_REDIS_TIMEOUT=60*60
NEVER_REDIS_TIMEOUT=365*24*60*60
10、django中include用法
首先在和settings.py同级目录的 urls.py 文件中导入 include 模块,并配置
from django.conf.urls import url,include
from django.contrib import admin
from articles import urls
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^article/', include('articles .urls')),
]
其次在 articles 应用中创建 urls.py 文件,配置如下
#!/usr/bin/env python
#-*- coding:utf-8 -*-
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'home/$', views.home),
url(r'index/([0-9]{4})/([0-9]{2})/([0-9]{2})/$', views.index), #无命名url,用()表示,写视图函数的时候,有几个括号,需要传递几个参数
url(r'test/(?P<year>[0-9]{4})/$', views.test), #命名url,,写视图函数的时候,传递参数的名必须是year
url(r'sign/$', views.sign,name='ssss'), #给url起别名,在前端调用的时候通过模板语言格式调用 {% url 'ssss' %}
url(r'login/$', views.login,{'name':'abc'}), #给url传递参数,写视图函数的时候,用key作为参数;如果这个参数和有名字的url在一起用的时候,不要起相同的名字
]