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

Posted reblue520

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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‘]

以上是关于django入门7之django template和xadmin常用技巧的主要内容,如果未能解决你的问题,请参考以下文章

Django入门学习--深入模板(templates)

Django之中间件7个保安

Python开发之Django框架入门Django安装

Django之Template

Django的templates(模板)

django---入门