사용자 정의 django admin 페이지 점프

4503 단어 django
django admin의changeview,  add_view 및 deleteview 페이지, 작업이 끝난 후에 우리가 가고 싶은 URL로 이동하려면 어떻게 해야 합니까
기본 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을 받은 후 이동합니다.
 
 
 
 
 
 
 
 
 

좋은 웹페이지 즐겨찾기