TIL#123 Django study(1)
テーブルをadminサイトに反映
bookmark/admin.py
from django.contrib import admin
from bookmark.models import Bookmark
@admin.register(Bookmark)
class BookmarkAdmin(admin.ModelAdmin):
list_display = ('id', 'title', 'url')
BookmarkAdmin
クラスは、BookmarkクラスがAdminサイトでどのように出力されるかを定義するクラスです.@admin.register()
レコーダを使用して住民サイトにログインします.レコーダの代わりにregister()
関数を用いて記述してもよい.bookmark/admin.py
from django.contrib import admin
from bookmark.models import Bookmark
class BookmarkAdmin(admin.ModelAdmin):
list_display = ('id', 'title', 'url')
admin.site.register(Bookrmark, BookmarkAdmin)
サイト名タグの管理
runserverの後に実行されるadminサイトにログインすると、ライブラリでデフォルトで提供されているuser、groupテーブルのほかに新しく追加されたbookmarkテーブルが表示されます.bookmarkテーブルの横にあるaddボタンをクリックしてモデルを作成します.pyで定義したテーブルの様子が表示されます.
generic view - ListView, DetailView
bookmark/views.py
from django.views.generic import ListView, DetailView
from bookmark.models import Bookmark
class BookmarkListView(ListView):
model = Bookmark
class BookmarkDetailView(DetailView):
model = Bookmark
これはレコードリストのビューを表示するためです.ListViewを継承する場合は,オブジェクトを含むリストを整理し,コンテキスト変数としてテンプレートシステムに渡すだけでよい.これらのリストをテーブル内のすべてのレコードにインポートして整理する場合は、テーブル名、すなわちモデルクラス名を指定するだけです.
明示的に指定されていなくても、倉庫でデフォルト値として指定できる2つのプロパティがあります.1つ目はコンテキスト変数として
object_list
を使用し、2つ目はテンプレートファイル名を모델명 소문자_list.html
フォーマットに指定する名前です.テンプレートファイル名はdispatterbookmark/bookmark_list.html
です.これは、特定のレコードの詳細を示すためのビューです.DetailViewを継承する場合は、特定のオブジェクトをコンテキスト変数に入れてテンプレートシステムに渡すだけです.テーブルからpkで特定のオブジェクトをクエリーしてインポートする場合は、テーブル名、すなわちモデルクラス名を指定するだけです.クエリーで使用するpk値は、URLConfからビューに抽出されたパラメータを使用します.
明示的に指定されていなくても、倉庫でデフォルト値として指定できる2つのプロパティがあります.1つ目はコンテキスト変数として
object
を使用し、2つ目は모델명 소문자_detail.html
フォーマットを使用したテンプレートファイル名です.テンプレートファイル名はdispatterbookmark/bookmark_detail.html
です.テーブルクエリ条件で使用されるpk値はURLConfによって渡され、その処理はDetailView Genericビューによって自己処理されます.templates - str()
bookmark/models.py
class Bookmark(models.Model):
title = models.CharField('Title', max_length=100, blank=True)
url = models.URLField('URL', unique=True)
def __str__(self):
return self.title
bookmark/templates/bookmark/bookmark_list.html
...
<div id="content">
<h1>Bookmark List</h1>
<ul>
{% for bookmark in object_list %}
<li><a href="{% url 'detail' bookmark.id %}">{{ bookmark }}</a></li>
{% endfor %}
</ul>
</div>
...
__str__()
メソッドが呼び出され、結果が出力されます.上のコードに従って、オブジェクトのtitleを出力します.SlugField
blog/models.py
class Post(models.Model):
...
slug = models.SlugField('SLUG', unique=True, allow_unicode=True, help_text='one word for title alias.')
...
allow_unicode
:オプションを追加すると、韓国語処理help_text
:この列を説明するフォーム画面に表示されます.adminサイトで表示可能ページや文章を説明するコア単語の集合です.もともと新聞や雑誌にタイトルを書くときに、重要な意味を含む単語だけを使ってタイトルを書く方法です.Web開発分野では、コンテンツの固有のアドレスとして使用されており、コンテンツのアドレスが何であるかを簡単に理解することができます.
通常、太字はページや文章タイトルの助詞、前置詞、カンマ、句点などの代わりにハイフネーション(-)を使用し、URLに使用されます.ブックマークをURLに使用することで、検索エンジンでページをより速く検索でき、検索エンジンの精度が向上します.
URLではpkがよく使われています.pkを使うと、数字しかないので内容を推測するのは難しいですが、slugを使うと、普通の単語なので分かりやすいです.
SlugFieldのポーリング長は50で、このフィールドはポーリングインデックスを生成します.
adminクラスの定義
blog/admin.py
@admin.register(Post)
class PostAdmin(admin.ModelAdmin):
list_display = ('id', 'title', 'modify_dt')
list_filter = ('-modify_dt', )
search_fields = ('title', 'content')
prepopulated_fields = {'slug': ('title', )}
Reference
この問題について(TIL#123 Django study(1)), 我々は、より多くの情報をここで見つけました https://velog.io/@dnpxm387/TIL-Django-study1テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol