django-admin(day1)

提供一个学员管理系统,有一个前台页面展示现有学员,并供新学员提交申请,一个后台负责处理。

django在渲染前端页面时,会根据settings.py中的APP的顺序查找templates,如果不同的app中含有相同的html文件,则会按顺序进行渲染

# models.py

from django.db import models # Create your models here. class Student(models.Model): SEX_ITEMS = { (1, '男'), (2, '女'), (0, '未知'), } STATUS_ITEMS = { (0, '申请'), (1, '通过'), (2, '拒绝'), } name = models.CharField(max_length=128, verbose_name='姓名') sex = models.IntegerField(choices=SEX_ITEMS, verbose_name='性别') profession = models.CharField(max_length=128, verbose_name='职业') email = models.EmailField(verbose_name='邮箱') qq = models.CharField(max_length=128, verbose_name='QQ') phone = models.CharField(max_length=128, verbose_name='电话') status = models.IntegerField(choices=STATUS_ITEMS, default=0, verbose_name='审核状态') create_time = models.DateTimeField(auto_now=True, editable=False, verbose_name='创建时间') def __str__(self): return '<Student: {}>'.format(self.name) class Meta: verbose_name = verbose_name_plural = '学员信息'

  

# admin.py

from django.contrib import admin
from .models import Student

# Register your models here.

class StudentAdmin(admin.ModelAdmin):
    list_display = ('id', 'name', 'sex', 'profession', 'email', 'qq', 'phone', 'status', 'create_time')
    list_filter = ('sex', 'status', 'create_time')
    search_fields = ('name', 'profession')

    fieldsets = (
        (None, {
            'fields': (
                'name',
                ('sex', 'profession'),
                ('email', 'qq', 'phone'),
                'status'
            )
        }),
    )


admin.site.register(Student, StudentAdmin)
# views.py

from django.shortcuts import render
from .models import Student

# Create your views here.


def index(request):
    students = Student.objects.all()
    return render(request, 'index.html', {'students': students})

  

在admin,如果数据库表中的字段含有choice参数,Django会自动条用get_status_display方法,所以不用配置

在前端页面中,如果要调用含有choice参数的对象,则要调用get_Field_display方法

{# index.html  #}

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>学院列表</h1>
    {% for student in students %}
        <li>{{ student.name }} - {{ student.get_status_display }}</li>
    {% endfor %}
</body>
</html>

猜你喜欢

转载自www.cnblogs.com/jieranfeng/p/11020357.html