首先,我们需要创建一个用户可以登录到管理网站。 运行 下面的命令:

$ python manage.py createsuperuser

输入你想要的用户名,按回车。

Username: admin

您将被提示输入你想要的电子邮件地址:

Email address: admin@example.com

最后一个步骤是输入你的密码。 您将被要求输入你的 密码两次,第二次的确认。

Password: **********
Password (again): *********
Superuser created successfully.


Django管理网站默认激活。 让我们开始发展 服务器和探索它。

回忆一下第1教程,你开始开发服务器一样:

$ python manage.py runserver

。 您应该看到管理员的登录界面:

django 2

在默认情况下是开启的, 登录屏幕会显示在自己的语言中,这取决于你 浏览器的设置和Django是否已经翻译了这门语言。

不匹配你所看到的吗?

如果在这一点上,而不是上面的登录页面,你得到一个错误 报告类似页:

ImportError at /admin/
cannot import name patterns
...

然后你可能使用Django的版本不匹配 教程的版本。 


现在,试着登录您在前面步骤中创建的超级用户帐户。 您应该看到Django管理索引页:

django 2

运,身份验证框架 Django。


但我们的调查应用程序在哪里? 这不是显示在管理索引页面。

文件,编辑它看起来像这样:

民意调查/ admin.py
from django.contrib import admin
from polls.models import Question

admin.site.register(Question)


,Django知道它应该显示在 管理索引页:

django 2

点击“问题”。 现在你的问题“改变列表”页面。 这个页面 显示数据库中所有的问题,让你选择一个改变它。 有“有什么事吗? 我们创建了第一个教程”问题:

django 2

点击“发生什么了? “问题编辑:

django 2

注意事项:

  • 模型。
  • )对应于适当的HTML 输入小部件。 每个类型的字段在Django知道如何展示自己 管理。
  • 得到免费的JavaScript 快捷方式。 日期得到一个“今天”快捷键,弹出式日历,和时间 一个“现在”快捷方式,方便弹出列表通常进入时间。

页面的底部部分给你两个选择:

  • ——保存更改保存并返回到这种类型的变更清单页面 对象。
  • 保存并继续编辑,保存更改并重新加载管理页面 这个对象。
  • 保存并添加另一个——保存更改并加载一个新的空白表格 类型的对象。
  • 删除,显示删除确认页面。

设置。 改变它,重新加载页面并检查 正确的值。

改变“发布日期”,点击“今天”和“现在”的捷径。 然后 点击“保存并继续编辑。 ”然后单击“历史”在右上角。 您将看到一个页面列出所有更改通过Django管理这个对象, 时间戳和用户名的人的改变:


, Django能够构造一个默认形式表示。 通常,您会希望 自定义外观和管理形式是如何工作的。 你会这样做,告诉 Django的选择你想要注册的对象。

符合:

民意调查/ 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)

——任何时候你需要改变 管理对象的选择。

上面这个变化使得“发布日期”之前 “问题”字段:

django 2

这不是令人印象深刻的只有两个字段,但是许多管理形式 的字段,选择一个直观的可用性是一个重要的细节。

说到拥有很多字段的形式,您可能想要分裂形式 成自定义字段:

民意调查/ admin.py
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)

自定义字段的标题。 这就是我们现在的表单的外观:

django 2

类显示一个特定的自定义字段开始崩溃了。 这是有用的,当你有一个长形式包含一个字段的数量 不常用的:

民意调查/ admin.py
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']}),
    ]

admin.site.register(Question, QuestionAdmin)


, admin页面没有显示的选择。

然而。

。 这很简单:

民意调查/ admin.py
from django.contrib import admin
from polls.models import Choice, Question
# ...
admin.site.register(Choice)

现在“选择”是一个可用的选项在Django管理。 选择“添加”的形式 是这样的:

django 2

盒子。 在我们的例子中,只有一个问题 在这一点上存在。

关系到另一个地方得到这免费。 当你点击“添加 另一个,“你会得到一个弹出窗口的“添加问题”的形式。 如果您添加一个问题 Django的窗口,然后单击“保存”,将保存到数据库并问题 动态地将其添加在“添加选择”选择的选择你 看着。

对象。 让我们实现它。

登记代码阅读:

民意调查/ 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)

管理页面。 通过 默认情况下,提供足够的字段3选择。”

加载“添加问题”页面看到看起来:

django 2

,每次你回来的“改变”页面 创建的对象,你得到另一个三个额外的插槽。

最后的三个当前槽你会发现一个“添加另一个选择” 链接。 如果你点击它,一个新的槽将被添加。 如果你想删除 添加槽,你可以点击右上角的X添加槽。 请注意 你不能删除原来的三名的位置。 这张图片显示了添加槽:

django 2

宣言写道:

民意调查/ admin.py
class ChoiceInline(admin.TabularInline):
    #...

), 相关对象显示在一个更紧凑,表格格式:

django 2

请注意,有一个额外的“删除? ”专栏,允许添加删除行 使用“添加另一个选择”按钮和行已经保存。


现在,admin页面的问题是看起来很好,让我们做一些调整 “改变列表”页面,显示系统中所有的问题。

此时的样子:

django 2

管理选项,这是一个 元组显示的字段名称,列,在变化的列表页面 对象:

民意调查/ admin.py
class QuestionAdmin(admin.ModelAdmin):
    # ...
    list_display = ('question_text', 'pub_date')

自定义 方法从教程1:

民意调查/ admin.py
class QuestionAdmin(admin.ModelAdmin):
    # ...
    list_display = ('question_text', 'pub_date', 'was_published_recently')

现在的问题改变列表页面看起来像这样:

django 2

默认情况下,方法的名称( 突显出替换为空格),每一行包含字符串 输出的表示。

)几 属性,如下:

民意调查/ models.py
class Question(models.Model):
    # ...
    def was_published_recently(self):
        return self.pub_date >= timezone.now() - datetime.timedelta(days=1)
    was_published_recently.admin_order_field = 'pub_date'
    was_published_recently.boolean = True
    was_published_recently.short_description = 'Published recently?'

:

list_filter = ['pub_date']

字段:

django 2

,Django 知道要给予适当的过滤器选项:“任何日期”“今天”“过去7天,” “本月”、“今年”。

这是进展顺利。 让我们添加一些搜索功能:

search_fields = ['question_text']

后面的查询 场景,搜索字段的数目限制在一个合理的数目 您的数据库更容易搜索。

所有像你认为他们应该一起工作。


显然,“Django政府”每个管理页面的顶部 荒谬。 它只是占位符文本。

很容易改变,使用Django模板系统。 Django管理 是由Django本身,其接口使用Django的模板吗 系统。


)。 模板可以生活在任何地方在你的文件系统 Django可以访问。 (运行Django无论用户服务器运行。) 然而, 保持你的模板内的项目是一个好习惯。

设置:

mysite / settings.py
TEMPLATE_DIRS = [os.path.join(BASE_DIR, 'templates')]

是文件系统目录的iterable检查什么时候 加载Django模板;它是一个搜索路径。

)到该目录。

Django源文件在哪里?

如果你有困难找到Django源文件所在的地方 在您的系统上运行以下命令:

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

(包括大 括号)用你自己的网站的名称在您认为合适的地方。 你应该结束了 一段代码:

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

属性来更容易 使这个特殊定制。

,这 将评估模板语言生成最终的HTML页面。 不要担心如果你不能现在——任何意义的模板 我们将深入研究Django模板语言教程3。

- - - - - - 它从默认目录复制到您的自定义目录,并使 的变化。


是一个应用程序)。

。 这样,你可能包括调查应用程序在任何新的项目 并保证会找到所需的自定义模板。

更多的 Django是如何找到模板的信息。


同样,您可能想要定制的外观和感觉Django 管理索引页面。

已经 注册与管理应用程序,按字母顺序排列的。 你可能想要 进行重大改革的布局。 毕竟,该指数可能是 管理最重要的页面,它应该很容易使用。

。 该变量包含每一个 安装Django应用程序,而不是使用硬编码的链接 特定对象管理页面,按照你自己的想法是最好的。

相关文章:

  • 2021-12-16
  • 2021-08-29
  • 2021-10-03
  • 2021-04-02
  • 2021-11-15
  • 2022-01-27
猜你喜欢
  • 2021-12-19
  • 2022-01-14
  • 2023-03-06
  • 2022-12-29
  • 2021-08-09
  • 2021-11-17
相关资源
相似解决方案