programing

Django 관리 인터페이스에서 하이퍼 링크가있는 사용자 지정 열을 추가하려면 어떻게합니까?

nasanasas 2020. 12. 12. 11:05
반응형

Django 관리 인터페이스에서 하이퍼 링크가있는 사용자 지정 열을 추가하려면 어떻게합니까?


장고 관리자 인터페이스가 있고 모델 목록에서 필드 값 중 하나를 사용하는 하이퍼 링크가 될 사용자 지정 열을 원합니다. 기본적으로 모델 필드 중 하나는 URL이며 열에 클릭 가능한 하이퍼 링크에 해당 URL이 포함되기를 바랍니다. 이 링크에는 모델 필드의 상대 경로로 앞에 추가 URL이 추가되어야합니다.


ModelAdmin-class에서 메서드를 정의하고 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방법 속성은 장고 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>'

자세한 내용 은 설명서 를 참조하십시오.

참고 URL : https://stackoverflow.com/questions/2156114/how-do-i-add-a-custom-column-with-a-hyperlink-in-the-django-admin-interface

반응형