사용자 정의 django admin 페이지 점프
4503 단어 django
기본 django admin은 changelist 로 이동합니다.view 페이지
------------------------------
다음 코드는django1입니다.6의
다음은 실행 가능한 방법입니다. 관리자 모델을 쓸 때 부류 관리자를 다시 쓰는 것입니다.ModelAdmin의changeview 방법
from django.contrib import admin
class MyAdmin(admin.ModelAdmin):
def change_view(self, request, object_id, form_url='', extra_context=None):
result_template = super(MyAdmin, self).change_view(request, object_id, form_url, extra_context)
result_template['location'] = '/dest/url'
return result_template
보시다시피 ModelAdmin을 호출하는changeview 결과를 얻어서resulttemplate가 이 조작을 했어요.
result_template['location'] = '/dest/url'
다음
왜 이렇게 하면 됩니까?무슨 일이 일어났는지 봅시다.
우리 다시 써changeview, 물론 매개 변수는 부류와 같아야 합니다
먼저 상위 ModelAdmin이 호출되었습니다.change_view의 이 함수, 이 함수는 무엇을 되돌려줍니까
소스 코드를 거슬러 올라가면 Template Response 대상을 되돌려줍니다. Model Admin을 호출합니다.render_change_form()
return TemplateResponse(request, form_template or [
"admin/%s/%s/change_form.html" % (app_label, opts.model_name),
"admin/%s/change_form.html" % app_label,
"admin/change_form.html"
], context, current_app=self.admin_site.name)
그럼 이제 Template Response를 보도록 하겠습니다.
사실 이런 파생 관계가 있다. Template Response <---Simple Templage <---Http Respone <---Http Response Base
Http Response에서 이루어졌습니다.
def __setitem__(self, header, value):
header = self._convert_to_charset(header, 'ascii')
value = self._convert_to_charset(value, 'latin-1', mime_encode=True)
self._headers[header.lower()] = (header, value)
만약 한 종류가 실현된다면setitem__, 그러면 [] 조작부호는 이 함수를 호출할 것입니다. (C++의 재부팅과 같습니다.)
result_template['location'] = '/dest/url'
그래서 위의 코드는 서버에서 되돌아오는 Response의 헤더에location을 썼고 브라우저가 받은 Http Response의 헤더에location이 있으면location이 지정한 URL으로 넘어갑니다
-------------------------------------------------------
그런데 모델 item에 들어가는changeview 인터페이스에서 GET가 이 URL을 요청합니다. 서버에서location을 되돌렸지만 브라우저가 바뀌지 않았습니다. 현재form이 제출해야 하기 때문입니다.
changeview인터페이스가 수정된 후 제출표를 클릭하면 브라우저가 서버의location을 받은 후 이동합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django의 질문 및 답변 웹사이트환영 친구, 이것은 우리의 새로운 블로그입니다. 이 블로그에서는 , 과 같은 Question-n-Answer 웹사이트를 만들고 있습니다. 이 웹사이트는 회원가입 및 로그인이 가능합니다. 로그인 후 사용자는 사용자의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.