美文网首页
Django小技巧

Django小技巧

作者: PyKailyn | 来源:发表于2016-07-26 16:10 被阅读0次

Django-Celery


  1. pip install django-celery(应该会自动安装celery等依赖项)
  2. 在setting文件中的INSTALLED_APPS里面添加‘djcelery’项以及添加如下代码:
import djcelery
from celery.schedules import crontab
djcelery.setup_loader()  # 能自动识别用户app下tasks.py里面的被@task装饰的函数
BROKER_URL = 'redis://127.0.0.1:6379/1'  # 需要确保redis启动。
CELERY_RESULT_BACKEND = 'redis://localhost:6379/1'
CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler'
  1. 执行python manage.py syncdb创建celery相关数据表。
  2. 在自己的app目录下创建tasks.py文件,并加入如下代码:
from celery import task
@task
def my_task_func():
    # here, write my code
  1. 执行python manage.py celery worker启动worker,一个负责执行task的进程
  2. 若是执行定时任务,还需要执行python manage.py celery beat开启心跳进程
    (用于监听什么时候应该执行task,并在应当执行时刻,发送信号给worker,然后worker执行task任务 )
  3. 运行django项目,进入admin后台的djcelery模块,添加定时任务。

Django-admin


** Django-admin中自定义后台的显示方式 **

from django.utils.html import format_html
class TestModel(models.Model):
   GENDER_CHOICES = ((-1, u'女'),(0, u'不详'),(1, u'男'))   
   name = models.CharField(max_length=12)   
   gender = models.SmallIntegerField(u'性别', choices=GENDER_CHOICES)

class TestModelAdmin(admin.ModelAdmin):
   list_display = ('id', 'name', 'gender', 'colored_gender')    
   # 自定义gender显示field
   def colored_gender(self, obj):  # 自定义函数,包含两个参数,obj代表数据对象        
       color = ''
       if obj.gender == -1:  # 女
           color = '#12d012'
       elif obj.gender == 0:  # 未知
           color = 'red'
       elif obj.gender == 1:  # 男
           color = 'yellow'
       # 这行中的get_gender_display()函数为django model自带的特殊方法,具体名称为get_FIELD_display()
       # 功能是获取FIELD列的显示字符。特别地,对于有choices选项的field有效(其会返回choices中的对应字符)。
       # format_html函数使得后台显示时不会按照字符串显示,而是以html的形式。
       return format_html('%s' %  (color, obj.get_gender_display()))
   colored_gender.short_description = "性别"    # 此行使得自定义的field可以按照模型的gender排序。并使得后台显示的列名与原生的列有相同样式
   colored_gender.admin_order_field = "gender"

** Django-admin中的添加数据表单时,选择外键的数据需要过滤时 **

class TestModel(models.Model):    
    user = models.ForeignKey(User, limit_choices_to={'is_admin': True},)

这样之后,在后台选择user时,就只会将User表中是admin的用户显示出来。

相关文章

  • django小技巧

    创建项目:django-admin.py startproject project_name python ma...

  • Django小技巧

    Django-Celery pip install django-celery(应该会自动安装celery等依赖项...

  • DRF

    Django REST framework Django REST framework的各种技巧【目录索引】

  • Django_补充小技巧

    1.Templates过滤器 什么是过滤器? 写在模板中,属于Django模板语言 可以修改模板中的变量,...

  • Django使用的小技巧

    Django 作为一个杰出的Python开源框架,或许得不到和其它流行框架如Rails这样多的赞美,但是它和其他框...

  • django技巧

    关于时间:timezone.localtime(timezone.now())delta = datetime.t...

  • Django项目系统学习(二)

    Day3 配置url的小技巧 在Django项目目录下面的urls.py文件中,我们会进行url与视图函数的匹配,...

  • 第2回-在Django中集成react项目

    创建时间:20161223 本章小目标 创建django项目 在django中使用react页面 实现django...

  • Django开发的3个实用小技巧

    Django为我们提供了很强大的开发工具,日常开发中也有一些实用小技巧,跟大家一起分享一下: Templates过...

  • django进阶技巧

    权限控制 在有较多方法需要权限控制时:可使用权限控制中间件,permissionMiddleWare 在只有少量方...

网友评论

      本文标题:Django小技巧

      本文链接:https://www.haomeiwen.com/subject/qhinjttx.html