简介:许多朋友问有关如何在Django的Django设置的问题。首席执行官在本文中注明将为您提供详细的答案,以供所有人参考。我希望这对每个人都会有所帮助!让我们一起看看!
实施思想:
1.需要自动执行为django命令的书面django方法
2.将自己的django命令添加到cron中以使用cron服务实施常规执行
PART1在Django项目中添加了自定义Django命令
1.我们建立了自己
应用程序称为MyApp。首先,在此应用程序目录中,我们需要创建一个新的管理目录。该目录应包装
包括:__ INIT __。py(内容为空,用于包装)和命令目录,然后包括:__ Init__.py和
mycommand.py,其中mycommand.py用于自定义命令方法。目录的树结构如下:
myapp/
__init__.py
模型
管理/
__init__.py
命令/
__init__.py
mycommand.py
tests.py
Views.py
2.编写命令mycommand.py的内容,简单的示例如下:
来自django.core.management.base import basecommand,commanderror
类命令(BaseCommand):
def hander(self, *args,**选项):
打印“ Hello World”
我们将BaseCommand类关联,并使用命令类和处理方法作为框架。如上所述,此命令实施“ Hello World”。
我们可以通过上述运行自己的django命令来使用python manage.py mycommand。
想知道更多细节,请参阅此处。
Part2使用Cron定期执行Django命令
1.在Ubuntu的Cron打开/关闭/重新启动
配置文件通常为/etc/init.d/cron
开始:sudo /etc/init.d/cron开始
关闭:sudo /etc/init.d/cron停止
重新启动:sudo /etc/init.d/cron重启
sudo服务cron重新启动
重新加载配置:sudo /etc/init.d/cron reload
您可以使用PS Aux |Grep Cron命令,看看Cron是否已经开始
2.新的克朗任务
建议使用crontab -u
用户名
-e命令添加自定义任务(编辑了与用户相对应的cron文件/var/spool/cron
它不能直接创建或修改,并且Crontab文件是通过crontab命令获得的。
编辑cron服务时,编辑内容具有一些格式和协议,输入:crontab -u root -e
A.直接执行命令行
每5秒打印一个字符串“ Hello World”,然后将其保存在file/home/linjiqin/helloworld.txt中。cron格式如下:
*/5 * * * * * Echo“ Hello world” /home/linjiqin/helloworld.txt
B,外壳文件
每5秒/home/home/linjiqin/hellowonh文件驱动一次。cron格式如下:
*/5 * * * * * /home/linjiqin/helloworld.sh
文件/home/linjiqin/hellowon.sh的内容如下:
#!/bin/sh
CD/HOME/LINJIQIN/
回声“ Hello World” Helloworld.txt
注意:请记住要在编辑器之后重新启动,否则它是无效的。
sudo服务cron重新启动
sudo服务克隆状态
crontab -l #view cron
crontab -e #modify cron
cron常用的例子:
每5秒执行一次: */5 * * * *?
每1分钟执行一次:0 */1 * * *?
每天执行一次:0 0 23 * *?
每天在上午1点执行:0 0 1 * *?
每月1点1点在1:0 0 1 1 *执行它?
每个月的最后一天23点执行:0 0 23 l *?
每周每周上午1点:0 0 1?* 二
执行26分,29分和33分:0 26,29,33 * * *?
每天在0、13:00、18:00和21:00:0 0 0 0 0 0,13,18,21 * *?
1.创建项目
运行以下命令来创建Django项目。项目名称是MySite:
$ django- addmin.py startproject mysite
创建的项目目录如下:
我的网站
e- manage.py
t - 锰矿
t- __init__.py
在──设置.py
s-或urls.py
。─— wsgi.py
1个目录,5个文件
阐明:
__init__.py:让Python将目录作为开发包所需的文件(即一组模块)。这是一个空文件,通常您不需要修改它。
Manage.py:命令行工具允许您通过多种方式与Django项目进行交互。类型python manage.py帮助查看它可以做什么。您不需要编辑此文件;在此目录中为方便起见是纯粹的。
settings.py:Django项目的设置或配置。
urls.py:项目的URL路由设置。目前,它是空的。
wsgi.py:wsgi Web应用程序服务器配置文件。有关更多详细信息,请检查如何使用WSGI部署
接下来,您可以修改settings.py文件,例如:修改Lagansy_code,设置时区time_zone
Django教程-01安装和使用
在上面的文章中,引入了安装Django的方法。让我们谈谈在此处连接数据库。
本文主要介绍坑和解决方案
正常连接和初始化数据库的命令是
执行此命令时,出现以下错误
在调查一部分之后,当我配置数据库时,我设置了一层默认值并将其修改如下。
然后,当您继续执行迁移时,您将报告以下错误
该机器的环境是Mac计算机。在官方教程上操作时,发现使用MySQLClient安装的Python软件包将取决于MySQL或MySQL-CLIENT的安装,但是当我安装MySQL和MySQL-CLIENT时,我发现了解决方案。后来发现在settings.py文件中,添加了以下代码,即可以连接pymsql。
或者可以在settings.py中添加代码__init__.py
然后执行python manage.py迁移命令,以发现该表是成功创建的。新表不影响原始库的其他表。
django2.0模型外键,一个-to -One on_delete参数
在django2.0之后,定义外键和一个 - 到一个关系时,您需要添加on_delete选项。为了避免两个表中数据不一致的问题,将报告错误:
TypeError:__init __()缺少1所需的位置参数:'on_delete'
例如:
user = models.onetoonefield(用户)
所有者=型号。
需要更改为:
user = models.onetoonefield(用户,on_delete = models.cascade) - 旧版本(models.cascade)是默认值
所有者= models.foreignkey(userProfile,on_delete = models.cascade)-thisyeeels.cascade in Old版本是默认值
参数描述:
on_delete有五个可选值:cascade,protect,set_null,set_default,set()
级联:此值设置是关节删除。
保护:此值设置将报告完整性错误。
set_null:此值设置将把外部键设置为null,但前提是允许将其作为null。
set_default:此值设置将设置外部键的默认值。
set():此值设置,外部值称为一个函数。
在正常情况下,使用级联。
以下是官方文档描述:
外国基金会接受其他论点,这些论点定义了相对工作方式的默认值。
foreferkey.on_delete?
user = models.foreignkey(user,models.set_null,空白= true,null = true,)
自版本1.9:ON_DELETE的弃用将成为Django 2.0中所需的参数。在较旧的版本中,它默认了Tocascade。
在django.db.models中找到了on_delete的帖子值:
级联[来源]?
级联删除。Django模拟SQL约束在删除级联反应上的行为,并删除包含外键的对象。
保护[来源]?
通过提高django.db.db.integrityerror的子类的保护来防止删除引用对象。
set_null [源]?
设置外国钥匙空;如果null isstrue,这是公开的。
set_default [源]?
将外国人设置为我的默认值;必须设置外国键的默认值。
set()[源]?
set(get_sentinel_user)),),),),)
do_nothing [来源]?
不采取行动。如果您的数据库返回执行引用参考完整性,则除非您手动向数据库添加sqlondeconstraint,否则这将导致IntegragrityError
foreferkey.limit_choices_to?
可以使用对象。
对于Exmple:
Staff_member = models.Foreignkey(用户,on_delete = models.cascade,limit_choices_to = {'is_staff':true},),)
导致在themodelformto上提交的相应列表list hasthat hastis_staff = true。这可能对Django管理员有帮助。
例如,与pythondateModule连接以限制按日期prime的选择时,呼叫表单可能会有所帮助。
defLimit_pub_date_choices():return {'pub_date__lte':dateTime.date.utcnow()} limit_to = limit_date_choices_choices_choices
笔记
边缘案件多次,因此您的呼叫可能会宣传几次。
结论:以上是主要首席技术官的全部内容,请注意有关如何在Django中设置的内容。感谢您的时间阅读ContentForgot在此网站上找到它。