python web开发——Django后台管理
来源:互联网 发布:新浪足球数据库 编辑:程序博客网 时间:2024/05/20 15:57
Django 管理后台
Django自带了管理后台,而且非常强大,这个模块是settings.py 中配置的django.contrib.admin应用。
创建一个管理员用户
我们首先来创建一个后台管理员用户,并为其设置密码。
创建账号:
python manage.py createsuperuser
会要求我们输入用户名、邮箱和密码。
创建好之后,启动服务器:
python manage.py runserver
在浏览器中输入如下地址:
http://127.0.0.1:8000/admin/
进入管理后台登陆界面,输入刚才设置的用户名和密码就可以登陆了。
让我们自己的应用可以在后台管理
打开polls/admin.py输入如下代码:
# -*- coding: utf-8 -*-from __future__ import unicode_literalsfrom django.contrib import adminfrom .models import Question# Register your models here.admin.site.register(Question)
这样在后台我们就可以编辑我们的Question了。
自定义管理表单
调整字段顺序
# -*- coding: utf-8 -*-from __future__ import unicode_literalsfrom django.contrib import adminfrom .models import Question# Register your models here.class QuestionAdmin(admin.ModelAdmin): fields = ['pub_date','question_text']admin.site.register(Question,QuestionAdmin)
这样可以先添加日期,后添加问题内容。
对字段分组
# -*- coding: utf-8 -*-from __future__ import unicode_literalsfrom django.contrib import adminfrom .models import Question# Register your models here.class QuestionAdmin(admin.ModelAdmin): #fields = ['pub_date','question_text'] fieldsets = [ (None, {'fields':['question_text']}, 'Date information',{'fields':['pub_date']}), ]admin.site.register(Question,QuestionAdmin)
每个字段集指定HTML样式类
# -*- coding: utf-8 -*-from __future__ import unicode_literalsfrom django.contrib import adminfrom .models import Question# Register your models here.class QuestionAdmin(admin.ModelAdmin):# fields = ['pub_date','question_text'] fieldsets = [ (None, {'fields':['question_text']}, 'Date information',{'fields':['pub_date'],'classes':['collapse']}), ]admin.site.register(Question,QuestionAdmin)
添加关联对象
好了,我们已经有自己的Question管理界面。 但是一个Question有多个Choices,管理界面中并没有将选项显示出来。
有两种方法来解决这个问题:
1.第一种是像我们为Question做的一样,在管理站点中注册Choice
# -*- coding: utf-8 -*-from django.contrib import adminfrom .models import Question# Register your models here.admin.site.register(Question)admin.site.register(Choice)
2.在添加Question时添加Choice
# -*- coding: utf-8 -*-from __future__ import unicode_literalsfrom django.contrib import adminfrom .models import Question# Register your models here.class ChoiceInine(admin.StackedInline): model = Choice extra = 3class QuestionAdmin(admin.ModelAdmin): fieldsets = [ (None, {'fields':['question_text']}, 'Date information',{'fields':['pub_date'],'classes':['collapse']}), ] inlines = [ChoiceInine]admin.site.register(Question,QuestionAdmin)
将Choice改为单行输入:
class ChoiceInine(admin.TabularInline):
让对象显示字段
默认地,Django显示每个对象的str()返回的内容。但有时如果我们能显示个别的字段将很有帮助。我们使用list_display 选项来实现这个功能,它是一个要显示的字段名称的元组:
class Question(models.Model): list_display=('question_text','pub_date')
显示中文
修改模型如下:
# -*- coding: utf-8 -*-from __future__ import unicode_literalsfrom django.db import models# Create your models here.class Question(models.Model): question_text = models.CharField(verbose_name="问题",max_length=200) pub_date = models.DateTimeField(verbose_name="发布日期") def __str__(self): return self.question_text class Meta: verbose_name = ('问题') verbose_name_plural=verbose_nameclass Choice(models.Model): question = models.ForeignKey(Question) choice_text = models.CharField(verbose_name='选项',max_length=200) vote = models.IntegerField(verbose_name='投票数',default=0) def __str__(self): return self.choice_text def Meta: verbose_name = ('选项') verbose_name_plural=verbose_name
自定义管理后台的外观
自定义管理后台步骤如下:
1.创建一个templates文件,在myblog目录下面(包含manage.py的目录)。
2.让系统识别该模板目录,打开settings.py,找到TEMPLATES选项。
TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, },]
3.在templates下创建一个名为admin的文件夹,然后从Django安装的原目录下(目录为django/contrib/admin/templates)将模板页面的源文件admin/base_site.html拷贝到这个文件夹里。
修改如下:
{% extends "admin/base.html" %}{% block title %}{{ title }} | {{ site_title|default:_('Django site admin') }}{% endblock %}{% block branding %}<h1 id="site-name"><a href="{% url 'admin:index' %}">{{ site_header|default:_('Django administration') }}</a></h1>{% endblock %}{% block nav-global %}{% endblock %}
- python web开发——Django后台管理
- python web 开发——初识django
- python web开发——Django入门
- python web开发——Django视图
- Django开发(二)——后台管理模块
- Pycharm+Django+Python+MySQL开发(一)后台管理数据库
- Python+Django开发游戏充值管理后台
- Pycharm+Django+Python+MySQL开发 后台管理数据库
- python——web后台开发实现网址生成二维码
- Python Web开发框架Django
- python web开发之django
- python+django web开发续
- Django 开发 Python Web应用
- python web开发--Django 学习
- Python进行web开发--django
- python Django后台开发笔记11
- python, web 以及 后台开发
- 第四章:Django模型——admin后台管理
- eclipse的安装及jdk的安装
- List的toString方法调用的是否是父类Object的?
- Java程序 如何复制文件夹
- Qt之生成png/jpg/bmp格式图片
- 让你的Idea高大上--activate-power-mode-master
- python web开发——Django后台管理
- 哈夫曼编码大全
- 模板模式
- Android 批量打包 基于Walle的多渠道快速打包自动脚本
- CSP(Content Security Policy),在一定程度上能预防XSS攻击
- SQL反模式(七)
- Pass的通用指令开关
- 投资后的收获
- 习题8-3 比特变换器(Bits Equalizer, SWERC 2012, UVa12545)