django1.7 tutorial 简单应用(二)

part 二是关于django的自带的管理员界面

在这里提醒以下,昨天创建数据库的时候忘了说一点,今天把我自己也坑了, 关于如果要在数据库里插入中文的话,

一开始创建数据库的时候就要加上 create database name default charset=utf8

我的处理办法可能比较复杂,删了原本的数据库(幸好没有往里边插数据)

然后再重新创建一次,

回到命令号, python manage.py makemigrations

python manage.py migrate



可以 python manage.py createsuperuser 创建管理员,然后会让你输入用户名, 邮箱, 密码

也可以 python manage.py syncdb 数据库同步完成之后会出现与 createsuperuser相同的界面


然后python manage.py runserver

浏览器打开 127,0,0.1:8000/admin

就可以看到登录界面了


有的打开可能是英文界面, 这就要到settings.py 里边修改配置文件了,编码改为 'zh-c'  LANGUAGE_CODE = 'zh-cn'

登录进去之后我们看到的界面是这样的


并没有我们创建的表

可以这样


在polls 的admin.py中加入下边一行


from polls.models import Question

admin.site.register(Question)

出现了我们问题的管理界面

然后下边一堆关于怎么优化管理员界面青自行参阅django官方文档tutorial ,直接展示结果,(对书中作出了部分改动),优化了关于中文显示部分

models.py


#coding=utf-8
from django.db import models
from django.utils import timezone
import datetime

class Question(models.Model):
    question_text = models.CharField("问题描述", max_length=200)
    pub_date = models.DateTimeField("更新日期")
    
    def __unicode__(self):
        return self.question_text

    def was_published_recently(self):
        return self.pub_date >= timezone.now() - datetime.timedelta(days=1)
    list_display = ('question_text', 'pub_date', 'was_published_recently')
    was_published_recently.admin_order_field = 'pub_date'
    #was_published_recently.boolean = True
    was_published_recently.short_description = '近期发布?'


Question.short_description = "问题"
class Choice(models.Model):
    question = models.ForeignKey(Question)
    choice_text = models.CharField("选项", max_length=200)
    votes = models.IntegerField("票数", default=0)

    def __unicode__ (self):
        return self.choice_text
    

admin.py


#coding=utf8
from django.contrib import admin
from polls.models import Question, Choice

#class QuestionAdmin(admin.ModelAdmin):
#   fields = ['pub_date', 'question_text']
class ChoiceInline(admin.TabularInline):
    model = Choice
    extra = 3

class QuestionAdmin(admin.ModelAdmin):
    fieldsets = [
        ("问题设置", {'fields':['question_text']}),
        ('日期信息', {'fields':['pub_date'], 'classes':['collapse']}),
    ]
    inlines = [ChoiceInline]
    list_display = ('question_text', 'pub_date', 'was_published_recently')
    list_filter = ['pub_date']
    #search_fields = ['pub_date']
    search_fields = ['question_text']

admin.site.register(Question, QuestionAdmin)

最终结果如上,感觉还是不错的,(注意上边的显示不是中文乱码, 是我手打随意打的)


最后文档介绍了一点有意思的东西, 重载管理员界面模板,每次管理员上来都看到django管理, 原文说这是ridiculous ,其实是山寨气息浓厚~

在工程的根目录下创建目录templates/admin

并且把在settings里边加入

TEMPLATE_DIRS = [os.path.join(BASE_DIR, 'templates')]

在django 的 安装目录下,不知道django的安装目录可以这样,

python

import sys
sys.path = sys.path[1:]
import django
print(django.__path__)"

然后把django/contrib/admin/templates   admin/base_site.html  复制到我们创建的目录下templates/admin


把我的里边的文件改为


{% extends "admin/base.html" %}

{% block title %}投票管理{% endblock %}

{% block branding %}
<h1 id="site-name"><a href="{% url 'admin:index' %}"><h1 id="site-name"><a href="{% url 'admin:index' %}">投票管理</a></h1></a></h1>
{% endblock %}

{% block nav-global %}{% endblock %}
这样出来的就不知django管理了,这少不是那么山寨了~


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值