django小技巧

本文详细介绍Django项目中常见问题的解决方案,包括快速下载插件、局域网访问配置、虚拟环境创建、外键定义、app目录管理、超级用户创建、xadmin安装配置等,帮助开发者提升项目效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

更快速下载需要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行这个代码直接注释掉就可以了;
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值