처음으로 장고를 사용하고 있습니다. (저는 파이썬에도 일반적으로 익숙합니다.) 그리고 저는 잠시 동안 클래스 기반 뷰와 관련된 특정 문제로 고심하고 있습니다. PHP에서 Laravel을 사용하여 "RESTful Resource Controllers"라고 할 수 있습니다.장고에있는 리소스 뷰
Laravel에 익숙하지 않은 사용자 모두에게 : '리소스'당 하나의 컨트롤러 (장고 - 말로보기)가 있다는 생각입니다. 이 컨트롤러/뷰 등 index()
, show()
, create()
, store()
, edit()
, 이러한 제어 방법에 대한 관련 URL 및 HTTP 방법 GET /photos
, GET /photos/1
는, GET /photos/create
각각 POST /photos
, GET /photos/1/edit
(예를 들어, 당신이 상대하고있는 경우 등의 방법을 정의 사진 포함). Laravel의 라우팅에서 한 줄만 선언하면 Route::resource('photos', 'PhotoController')
이며 이러한 URL은 자동으로 생성됩니다. 자세한 내용은 Laravel's docs을 참조하십시오.
나는이 패턴을 정말 좋아하고 장고에서 사용하고 싶습니다.
내가 이해하는 한, 장고에는 실제로 이런 것들이 없다. 장고에는 클래스 기반 뷰가 있지만 리소스를 나타내지는 않습니다. 오히려 'index()'(PhotoListView
)보기, 'show()'보기 (PhotoDetailView
) 등을 볼 수 있습니다.
장고에서이 패턴을 어떻게 구현해야하는지 잘 모르겠습니다. 원하는 것이 무엇인지 잘 모르겠습니다.
조사한 후 내가 사용 될 수있는 몇 가지 정보를 발견
http://watchitlater.com/blog/2010/02/django-restful-resources/
https://baxeico.wordpress.com/2014/06/25/put-and-delete-http-requests-with-django-and-jquery/
내가 첫 번째 링크에서 커스텀 뷰 클래스가 수행 모르겠어요를 그 주식 장고 볼 수 있습니다 ' t (정상적인 Django View는 어느 정도 똑같은 일을한다.), 나는 두 번째 링크가 내가 원하는 것을 정확하게 수행하지 않는다고 생각한다. (정확하게 이해한다면,이 기사는 단지 미들웨어를 문제의 해결책으로 설명한다. Django는 요청에 DELETE/PUT 요청과 함께 전송 된 데이터를 저장하지 않습니다).
url(r'^photos/(.*)$', PhotoView.as_view())
을 :
이 같은 특정 리소스에 대한 모든 URL과 일치하는 URLconf에서 한 줄을 사용하여이를 바탕으로
, 나는 두 가지 가능한 해결책을 고안 그런 다음 사용자 정의 View 기본 클래스의as_view()
함수는/photos
,/photos/1
및/photos/1/edit
과 같은 URL의 라우팅을 올바른 클래스 메소드에 처리합니다. 단점은 라우팅을보기 (올바른 위치가 아닌)에 배치하고 이름이 지정된 패턴을이 방식으로 사용하여 코드의 다른 위치에있는 URL을 참조 할 수 없다는 것입니다. 그것은 Laravel에서 작동하는 방식에 가장 가깝습니다. 각 URL에 대한 URLconf에서를 사용하여 별도의 행, 같은 :
url(r'^photos$', PhotoView.index) url(r'^photos/(\d+)$', PhotoView.show) url(r'^photos/(\d+)/edit$', PhotoView.edit)
이의 장점라는 패턴이 평소와 같이 작동, 모든 경로가 URLconf에 남아 있다는 것입니다.그러나 View 클래스 구현 측면에서이를 수행하는 방법을 알지 못합니다 (모든 메서드 @classonlymethod, 오른쪽으로 꾸밀 필요가 있습니다).
죄송합니다. 텍스트 벽을 죄송합니다. 최선을 다해 해결하는 방법에 대한 의견을 듣고 싶습니다. 또는 어쩌면 나는 미친놈 일 뿐이며 모든 정상 장고 코더와 같은 기능 기반보기를 사용해야합니까?
당신은 [장고 REST 프레임 워크]를 본 적이 (http://www.django-rest-framework.org/)? –
@JensAstrup 예, 저는 (반복적으로) 우연히 발견했습니다. 나는 API를 만들지 않고 웹 사이트/웹 애플리케이션을 만들 것이다. – Compizfox