Django adminインターフェイスがあり、モデルのリストには、フィールド値の1つを使用するハイパーリンクになるカスタム列が必要です。基本的に、モデルのフィールドの1つはurlとi 'です。 dクリック可能なハイパーリンクにそのURLを含める列のように、このリンクにはモデルフィールドの相対パスとして追加のURLを追加する必要があります。
ModelAdminクラスでメソッドを定義し、allow_tags
属性をTrue
に設定します。これにより、メソッドは列に表示するためにエスケープされていないHTMLを返すことができます。
次に、ModelAdmin.list_display属性のエントリとしてリストします。
例:
class YourModelAdmin(admin.ModelAdmin):
list_display = ('my_url_field',)
def my_url_field(self, obj):
return '<a href="%s%s">%s</a>' % ('http://url-to-prepend.com/', obj.url_field, obj.url_field)
my_url_field.allow_tags = True
my_url_field.short_description = 'Column description'
詳細については、 ModelAdmin.list_display のドキュメントを参照してください。
使用 format_html
ユーティリティ。これにより、パラメータからhtmlがエスケープされ、テンプレートで使用しても安全であると文字列がマークされます。 allow_tags
method属性は、Django 1.9で廃止されました。
from Django.utils.html import format_html
class MyModelAdmin(admin.ModelAdmin):
list_display = ['show_url', ...]
...
def show_url(self, obj):
return format_html("<a href='http://pre.com{0}'>{0}</a>", obj.url)
次の場合でも、管理ユーザーは安全です。
url == '<script>eval(...);</script>'
詳細については、 ドキュメント をご覧ください。