zoukankan      html  css  js  c++  java
  • django入门7之django template和xadmin常用技巧

    django入门7之django template和xadmin常用技巧

    <li {% if request.path|slice:'7' == '/course' %}class="active"{% endif %}>

    根据访问路径url来判断

    如访问:http://127.0.0.1:8000/course/list  截取request.path的7位如果是 /course 就代表是课程相关的链接

    <li  {% if request.path|slice:'17' == '/org/teacher/list' %}class="active"{% endif %}>

    获取用户消息个数

    注销用户,登出用户

    from django.contrib.auth import authenticate, login, logout
    
    class LogoutView(View):
        """
        用户登出
        """
        def get(self, request):
            logout(request)
            from django.core.urlresolvers import reverse
            return HttpResponseRedirect(reverse("index"))

    做除法的方式:

    {% for org in course_orgs %}
    <li class="{% if forloop.counter|divisibleby:'5' %}five{% endif %}">
        <a href="{% url 'org:org_home' org.id %}">
            <div class="company">
                <img width="184" height="100" src="{{ MEDIA_URL }}{{ org.image }}"/>
                <div class="score">
                    <div class="circle">
                        <h2>{{ org.tag }}</h2>
                    </div>
                </div>
            </div>
            <p><span class="key" title="{{ org.name }}">{{ org.name }}</span></p>
        </a>
    </li>
    {% endfor %}

    做加法:

    {% for course in courses %}
    <div class="module1_{{ forloop.counter|add:2 }} box">
        <a href="{% url 'course:course_detail' course.id %}">
            <img width="233" height="190" src="{{ MEDIA_URL }}{{ course.image }}"/>
        </a>
        <div class="des">
            <a href="{% url 'course:course_detail' course.id %}">
                <h2 title="{{ course.name }}">{{ course.name }}</h2>
            </a>
            <span class="fl">难度:<i class="key">{{ course.get_degree_display }}</i></span>
            <span class="fr">学习人数:{{ course.students }}</span>
        </div>
        <div class="bottom">
            <span class="fl" title="{{ course.course_org.name }}">{{ course.course_org.name }}</span>
            <span class="star fr">{{ course.fav_nums }}</span>
        </div>
    </div>
    {% endfor %}

    设置404页面

    # 全局404页面配置
    handle404 = 'users.views.page_not_found'

    函数

    def page_not_fount(request):
        # 全局404处理函数
        from django.shortcuts import render_to_response
        response = render_to_response('404.html', {})
        response.status_code = 404
        return response

    settings.py中的配置

    DEBUG = False
    
    ALLOWED_HOSTS = ['*']

    首页模拟出500错误

    修改后台导航图标

    https://fontawesome.com/updates?from=io

    font awesome

    下载新版本

    http://fontawesome.io

    替换xadmin的相关样式

    找到喜欢的图标复制替换即可

    直接替换class样式

    效果

    加入排序功能:

    课程默认按照点击数倒序排列

    对某些字段进行只读属性添加

    # 有些字段可以修改是不合理的,比如点击数和收藏数,可以改为只读
    readonly_fields = ['click_nums', 'fav_nums']

     

    效果

    不显示某些字段

    Xadmin在一个模块中嵌套另外一个模块

    课程中嵌套章节信息,只能做一层嵌套:即只能在课程中嵌套章节,而不能在章节中嵌套视频信息


    也可以嵌套多个模块

    将一个model注册为两个model

    class BannerCourse(Course):
        # 不生成表又可以注册model
        class Meta:
            verbose_name = "轮播课程"
            verbose_name_plural = verbose_name
            proxy = True

    根据是否轮播进行筛选区分成两个模块

    使用djangoqueryset进行筛选

    class BannerCourseAdmin(object):
        # 后台显示的字段
        list_display = ['name', 'desc', 'detail', 'degree', 'learn_time', 'students', 'fav_nums', 'click_nums', 'add_time']
        # 后台搜索的字段
        search_fields = ['name', 'desc', 'detail', 'degree', 'students', 'fav_nums', 'click_nums']
        # 筛选功能
        list_filter = ['name', 'desc', 'detail', 'degree', 'learn_time', 'students', 'fav_nums', 'click_nums', 'add_time']
        # 加入点击数倒数排列
        ordering = ['-click_nums']
        # 有些字段可以修改是不合理的,比如点击数和收藏数,可以改为只读
        readonly_fields = ['click_nums']
        # 不显示某些字段
        exclude = ['fav_nums']
        # 课程中嵌套章节
        inlines = [LessonInline, CourseResourceInline]
    
        def queryset(self):
            qs = super(BannerCourseAdmin, self).queryset()
            qs = qs.filter(is_banner=True)
            return qs

    课程勾选是否轮播就被筛选到了轮播课程

     

    在列表页面可以编辑的功能

    传递函数显示到列表页中


    添加链接跳转

    新增功能插件:自动刷新页面

    # 有些字段可以修改是不合理的,比如点击数和收藏数,可以改为只读
    readonly_fields = ['click_nums', 'fav_nums']

  • 相关阅读:
    浅谈线性 Linear
    Github TinyRenderer渲染器课程实践记录
    蓝点无限UWB TDOA 低功耗标签 功耗测试
    UWB DW1000 BP30 测距代码架构
    C语言
    C语言
    张量tensor 和张量分解 tensor decomposition
    Manifold learning流行学习和谱聚类
    机器学习里面的核kernel, 维数灾难
    机器学习评价方法
  • 原文地址:https://www.cnblogs.com/reblue520/p/12052954.html
Copyright © 2011-2022 走看看