更快速下载需要pip安装的各种插件的方法:
pip install -i https://pypi.douban.com/simple/ mysqlclient
如何使局域网内其他机器上也可以访问django项目的网页?
默认情况下只有在本地才可以访问,使用pycharm时可以通过修改配置,使局域网内其他机器上也可以访问:
菜单栏Run → edit configurations →
Host:0.0.0.0
重新启动一下,即 可以通过IP地址访问
创建app
Tools → Run manage.py Task… →
startapp message
settings INSTALLED_APPS 处添加自己创建的app
以指定的python版本安装虚拟环境
命令行输入,
mkvirtualenv -p C:…(python路径)\python.exe 虚拟环境名称
# mkvirtualenv 虚拟环境名称
# 是指用默认python安装
在django2.0后,定义外键和一对一关系的时候需要加on_delete选项,此参数为了避免两个表里的数据不一致问题,不然会报错:
TypeError: __init__() missing 1 required positional argument: 'on_delete';
需要改成:
user=models.OneToOneField(User,on_delete=models.CASCADE) --在老版本这个参数(models.CASCADE)是默认值
owner=models.ForeignKey(UserProfile,on_delete=models.CASCADE) --在老版本这个参数(models.CASCADE)是默认值;
参数说明:
on_delete有CASCADE、PROTECT、SET_NULL、SET_DEFAULT、SET()五个可选择的值
CASCADE:此值设置,是级联删除。
PROTECT:此值设置,是会报完整性错误。
SET_NULL:此值设置,会把外键设置为null,前提是允许为null。
SET_DEFAULT:此值设置,会把设置为外键的默认值。
SET():此值设置,会调用外面的值,可以是一个函数。
一般情况下使用CASCADE就可以了。.
apps目录建立
新建文件夹apps,将四个app文件夹拖入apps,
取消勾选:Search for references,这是自动在引入users前加上 .apps
apps文件夹右键-Mark-Source Root;
在settings配置中将apps加入到搜索目录下:
import os
import sys # 添加
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0, os.path.join(BASE_DIR, 'apps')) # 添加
settings不设置的话,命令行中运行时会报错.
ModuleNotFoundError: No module named 'users'
创建超级用户时报错
django.db.utils.DataError: (1406, "Data too long for column 'gender' at row 1")
解决方法:
在pycharm中按快捷键ctr+h,快速查找gender,找到对应的字段 ;
可以看到设置的字符长度是5,可是female有6个字节,所以修改max_length=6 ;
然后,更新数据表:
makemigrations users
migrate users
然后可以重新创建admin后台的超级账户了。
修改后台管理界面语言和时间:
settings.py
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
# USE_TZ = True 存储数据过程中django会把时间取为UTC,即国际时间。
USE_TZ = False
pip下载各种需要的包:
http://www.lfd.uci.edu/~gohlke/pythonlibs/
mark source root 一些总的apps文件后,settings相应的配置:
sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))
sys.path.insert(0, os.path.join(BASE_DIR, 'extra_apps'))
xadmin安装配置:
下载源码,zip的可能不适配django2.0;
git clone -b django2 https://github.com/sshwsfc/xadmin.git
下载完成后,在django项目下新建一个extra_apps文件夹,解压到这个文件夹里;
安装完成后,把别的文件都删了,只留下xadmin(里层的xadmin)即可;
安装依赖包:
pip install -i https://pypi.douban.com/simple/ django-crispy-forms django-import-export django-reversion django-formtools future httplib2 six
配置settings.py,同时将extra_apps 设置为 source_root:
sys.path.insert(0,os.path.join(BASE_DIR, 'extra_apps'))
在apps里加入:
INSTALLED_APPS= [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
#加入这三个
'xadmin',
'crispy_forms',
'reversion',
]
配置好后,就可以同步数据库表了
python manager.py makemigrations
python manager.py migrate
设置urls
import xadmin
urlpatterns = [
path('xadmin/', xadmin.site.urls),
]
#from django.contribimport admin
#import xadmin
#from django.urlsimport path
#xadmin.autodiscover()
# from xadmin.plugins import xversion
#xversion.register_models()
#
#urlpatterns= [
# path('admin/', admin.site.urls),
#
# path('xadmin/', xadmin.site.urls),
#]
开始替换admin:将用到admin的地方去掉,换成xadmin,否则可能产生冲突;
启动项目,创建超级用户就可以用xadmin登录了;
点击add widget (添加小组件)会报错;
TypeError at/tg_xadmin/xadmin/userwidget/add/
render() got an unexpected keyword argument ‘render’
把这个boundfield.py里面的93行这个代码直接注释掉就可以了;