zoukankan      html  css  js  c++  java
  • Django tutorial part2

    writing_first_django_app_part2

    Create super user

    下面开始创建管理者帐号:

    $ python manage.py createsuperuser
    

    输入用户名和密码,邮箱之后创建帐号

    运行runserver之后,进入http://127.0.0.1:8000/admin/ 可以登录管理界面

    登录之后这时在管理界面还没能看到我们的poll应用,我们需要告诉admin我们的Question对象需要在管理界面显示,修改polls/admin.py:

    from django.contrib import admin
    from polls.models import Question
    
    admin.site.register(Question)
    

    重启服务器之后就可以看到Questions了

     
    Customize the admin form

    刚才的register()函数仅仅是将Question类注册,现在增加一个QuestionAdmin类在里面来自定义admin form,修改polls/admin.py:

    from django.contrib import admin
    from polls.models import Question
    
    
    class QuestionAdmin(admin.ModelAdmin):
        fields = ['pub_date', 'question_text']
    
    admin.site.register(Question, QuestionAdmin)
    

    在register()函数中再增加一个参数QuestionAdmin类,由admin.ModelAdmin类继承而来,上面的修改之后将会按照fields的list里面的顺序来排列类

    修改polls/admin.py,将表格分解成fieldsets:

    from django.contrib import admin
    from polls.models import Question
    
    
    class QuestionAdmin(admin.ModelAdmin):
        fieldsets = [
            (None,               {'fields': ['question_text']}),
            ('Date information', {'fields': ['pub_date']}),
        ]
    
    admin.site.register(Question, QuestionAdmin)
    

    list中每一个tuple的第一个元素是这个fieldset的标题

    collapse 有时候一些fieldset有很多不是常用的内容,可以将它初始化为收缩的:

    from django.contrib import admin
    from polls.models import Question
    
    class QuestionAdmin(admin.ModelAdmin):
        fieldsets = [
            (None,               {'fields': ['question_text']}),
            ('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),
        ]
    

    只需要在那个fieldset的tuple中增加一项'classes': ['collapse'] 即可,这样需要查看这些内容时点击展开就可以查看

    现在我们有了Question的管理页面,但是目前还没有展示每个Question的Choices

    第一种方法同样可以像Question那样注册Choice,但是本来每个Choice是和一个Question关联的,这样管理不方便,所以可以用inline的方式来添加Choice:

    # polls/admin.py
    
    from django.contrib import admin
    from polls.models import Choice, Question
    
    class ChoiceInline(admin.StackedInline):
        model = Choice
        extra = 3
    
    class QuestionAdmin(admin.ModelAdmin):
        fieldsets = [
            (None,               {'fields': ['question_text']}),
            ('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),
        ]
        inlines = [ChoiceInline]
    
    admin.site.register(Question, QuestionAdmin)
    

    ChoiceInline类将告诉django在Question的管理页面也可以编辑Choice,默认提供3个位置,我们可以手动增加数量或者减少

     

    Customize the admin look and feel

    Customizing project's templates

    首先在工程的根目录创建templates目录,然后在mysite/settings.py里面添加模板的目录:

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

    然后在templates目录下创建目录admin,然后将系统django目录(django/contrib/admin/templates/admin/base_site.html)文件拷贝到新建的admin目录里面,如果找不到系统django的目录,可以运行下面命令:

    $ python -c "
    import sys
    sys.path = sys.path[1:]
    import django
    print(django.__path__)"
    

    然后修改模板,这里我们将管理页面上面的标题改为"Polls Administration",修改模板的代码,替换掉原来的{{site_header|default:_('Django administration')}}

    {% block branding %}
    <h1 id="site-name"><a href="{% url 'admin:index' %}">Polls Administration</a></h1>
    {% endblock %}
    

    这里django的默认管理模板都是可以重载的,方法和刚才base_site.html一样,将原文件复制到新建的模板文件夹中,然后进行修改

  • 相关阅读:
    <image>的src属性的使用
    echarts 图形图例文字太长如何解决
    python 多进程锁Lock和共享内存
    python 多进程multiprocessing 模块
    python memcache 常用操作
    python memcache操作-安装、连接memcache
    python
    python 复习 4-1 函数、参数、返回值、递归
    python基础复习-1-2 数据类型-str、list、tuple、dict
    python基础复习-1-1文件类型、变量、运算符、表达式
  • 原文地址:https://www.cnblogs.com/jolin123/p/4339973.html
Copyright © 2011-2022 走看看