안녕하세요.
모두가 걷기 위해 다른 장고에 오신 것을 환영합니다.
그래서 당신은 아마도이 시점에서
자동차 할당을 작업하고있을 것입니다.
이것은 우리의 첫 번째 실제 만들기,
읽기, 업데이트 및 할당을 삭제합니다.
이 과제의 많은 부분은
DJ4E 샘플에서 제공 한 코드를보고 가져 오는 것입니다.
이 할당에 대한 저장소를 복제하지 마십시오.
DJ4E 샘플은 괴물입니다.
그것은 모든 종류의 물건을 가지고 있습니다.
너무 복잡하고 원하지 않습니다.
멋지고 깨끗한 응용 프로그램으로 시작하고 싶습니다.
이전 과제는
정말 작은 응용 프로그램을 만드는 것이 었습니다.
우리는 그 응용 프로그램을 확장 할 것입니다.
그렇기 때문에
이미이 DJ4E 프로젝트를 어디에 있든지 가지고 있습니다.
그래서 이것이 무엇인지,
이 과제는
샘플 코드를 사용하여 진화하는 것입니다.
하지만 제가 정말로 할
일은 샘플 코드를 살펴보는 것입니다. 이
샘플 코드에는
새로운 개념이 있기 때문입니다.
따라서 이것은
할당을 정확히 수행하는 방법보다 샘플 코드에 대한 강의입니다.
그러나 중요한 것은
문자 그대로,
우리가
다음 n 주 동안 작성하려고하는 모든 프로그램은이 CRUD의 변형이기 때문에 모든 단일 라인을 이해해야합니다.
그래서 이러한 기본보기,
404,
모든 것들은 많은 것들에서 정말로 기초가됩니다.
장고의 모든 것처럼이 코드를 작성하는 올바른
방법은 정말 작고 간결합니다.
그럼 코드를 살펴 보자.
글쎄, 가서 코드를 실행 해 봅시다.
자동차로 이동하면 로그인해야합니다.
그래서 이것에 대한 아이디어는 두 개의 테이블이 있다는 것입니다.
셰프의 테이블이 있습니다.
그래서 저는 메이크업을 추가하려고 합니다.
그리고 저는 자동차를 추가하려고 합니다.
그리고 이것에 대한 멋진 점은 네온
1, 마일리지 1,234, Sakalcard입니다.
그런 다음이 멋진 드롭 다운 메뉴가 있습니다.
그래서 여기에
많은 형태가 일어나고 있습니다. 드롭 다운이
있습니다.
그런 다음이 목록을 가지고 있으며 업데이트하고 삭제할 수 있습니다.
그래서 우리의 전체 CRUD가 있습니다.
그래서 우리는 만드는 것을 추가 할 수
있습니다, 보기, 자동차 등을 추가
그래서 모든 샘플입니다.
그래서 그것은 당신이 써야한다는 것과 매우 가깝습니다.
그냥 잡아서는 안되며 그 모든 것들입니다.
그럼 먼저 살펴 보겠습니다.
그래서 저는 여기 DJ4E 샘플에 앉아 있습니다.
당신이 보면, 당신은
프로젝트에서 내 다양한 응용 프로그램을 모두 볼 수 있습니다.
그래서 우리는 자동차가 있습니다,
하지만 난 정말 인증 코드로 시작하고 싶습니다,
여기 샘플로 돌아 가면, 내가
로그인 할 수있는 코드를 로그 아웃 할 수 있습니다.
그래서 내가 로그 아웃했는지 확인하기 위해 자동차에 곧장 간다면.
당신은
내가 자동차에 바로 갈 때 그것이하는 것을 알 수 있습니다,
그것은 나를 로그인 경로,
그리고 다음 자동으로 돌아가는 것입니다.
그래서 자동차의이 뷰는
로그인 믹싱으로 스스로를 보호했습니다.
나중에 우리는 로그인을 할 것이고,
귀하의 로그인은 이렇게 보이지 않을 것입니다.
그러나 이것은 내가 샘플에 가지고있는 것입니다.
아직 예쁘게 만들 필요는 없습니다.
다가오는 과제는 모든 것을 예쁘게 만들 것입니다.
그래서 지금 우리는 자동차에 있고 우리는 로그인합니다.
귀하의 응용 프로그램에는 여기에 더 많은 것들이
있어야하지만이
자동차의 견해의 본질을 실제로 보여주는 데 더 관심이 있습니다.
자동 로그인의 작동 방식에 대해 간단히 살펴보겠습니다.
그래서 dj4e-samples/settings.py
를 보면이 인증을 연결해야합니다.
그래서 기본적으로
Django에서 가져온 코드, 몇 가지 뷰 등이 있습니다.
시작 프로젝트를 수행 할 때 모두 함께했습니다.
물론, 여기 어딘가에,
우리는 자동차가 어디에 있든 자동차가 있어야 합니다.
예, 자동차 응용 프로그램 설정,
자동차 응용 프로그램을 가져와야합니다.
dj4e-samples/urls.py
를 살펴보면 여기에서 자동차를 찾을 수 있습니다.
기본적으로
“최상위 수준에서는
자동차 아래의 모든 것이
autos.py 의 url 파일에 위임됩니다.
또한 그 계정도 있습니다.”
그래서 당신이 기억한다면,
이것은 우리를 위해 장고에서 온 많은 견해입니다.
그것은 우리를 위해 미리 설치되어 있습니다.
우리가해야 할 일은
registration.html 라는 이름의 템플릿을 제공해야한다는 것입니다.
그래서 나는 집/템플릿/등록 /에서 이것을 가지고 있다고 생각합니다.
네, 그래요 그래서 실제로 두 개의 로그인이 있습니다.
나는 login.html 같은 정말 간단한 하나를 가지고있다.
이것은 내가 시작하는 것이 좋습니다.
나중에 소셜 로그인을 사용합니다. 이것은 매우 간단합니다.
장고 양식 기능을 사용하는 로그인 페이지입니다.
오류가 형성되면
유효성 검사 오류가 있음을 의미합니다.
다시
돌아왔고이 페이지를 다시 표시하고 오류를 보여 주었다.
그런 다음
로그인 이름이있는보기에 대한 역방향 조회 인 URL이있는 간단한 게시물 양식을 만듭니다.
그런 다음 CSRF 토큰을 넣은 다음 양식을 가져 와서
단락 태그로이 작업을 만듭니다.
그래서 그것은 간단한 로그인입니다,
그것은 우리가 보여주고있는 실제 하나가 아닙니다.
그런 다음
실제로 성공적으로 로그인 할 때
자동차로 돌아 오는 것을 알 수 있도록 전달해야하는 숨겨진 값입니다.
모든 작업이 완료되면
로그인이 완료된 후 다시 여기로 돌아옵니다.
그래서 등록/로그인,
당신은 당신의 응용 프로그램 중 하나에 넣을 수 있습니다,
하지만 당신은 그것을 이름을 registration/login.html 할 수 있습니다.
그래서 내가 진짜 빨리 살펴보고
집/템플릿에 들어간다면,
이것들은 모두 템플릿입니다.
나는 LS를 할 때, 당신은 내가
집이 있음을 볼 수 있습니다/템플릿/집과 집/템플릿/등록.
여기에 둘 이상의 폴더를 가질 수 있습니다.
등록중인 내용을
살펴보면이 간단한 로그인이 있고 나중에
GitHub 로그인 기능을 제공하는 더 복잡한 로그인이 있음을 알 수 있습니다.
그래서 그것이 의미하는 것은 소셜 로그인 사용입니다.
요점은 이러한 템플릿 아래에
있으므로 하나의 하위 폴더만 가질 필요가 없으며
두 개 이상의 하위 폴더를 가질 수 있습니다.
그래서
우리가 로그인 믹스 인을 추가 할 우리의 의견을 말할 때 그래서 그것을 만들기 위해 필요한
구성이다 우리는 단지 초에서 볼 수 있습니다.
우리는 로그인 믹스 인을 사용하는 로그인에서 우리의 견해를 말해,
다음에서 템플릿을 얻을 수있는 위치를 알고있다.
그래서 그것은 단지 그것의 일부이며,
당신의 지시는 당신에게 그것을하는 방법을 알려줍니다.
그래서 당신이
구축하려고하는 모든 응용 프로그램 또는 당신이 구축하려고하는 프로젝트,
당신은 설정 PY,
urls.py, 다음 템플릿을 확인해야합니다.
그런 다음
로그인 믹스 인을 사용하기 시작해야하며 모든 것이
마술처럼 함께 시작됩니다.
그럼 실제 자동차 응용 프로그램을 살펴 보자.
우리는
여기에 몇 가지 다른 것들, 자동/URL을 살펴 보겠습니다.
다중 터미널 탭을
사용하려고하므로 파일간에 정말 빠르게 전환 할 수 있습니다.
아마 나보다 더 나은 텍스트 편집기를 가지고있을 것입니다.
그래서 나는 URL을 가지고
있어요, 나는 autos/views.py 살펴 볼거야.
그럼 나는 autos/model.py 볼거야.
그럼 나는 autos/forms.py 볼거야.
그래서이 네 가지 파일,
URL, 뷰, 모델, 양식을 통해 작업 해 봅시다.
아마 먼저 모델을 해 봅시다.
그래서 이것은 매우 간단합니다.
우리는 Make 객체 클래스를 만들 것입니다.
그것은 거기에
몇 가지 유효성 검사기가있는 하나의 문자 필드를 가질 것입니다.
우리는 양식을 가지고 놀고 있습니다.
당신은 모델에 유효성 검사기를 넣을 수 있습니다.
우리는 이전에 형태로 유효성 검사기를
보았지만, 기본적으로 말하는 유효성 검사기가 있습니다.
적어도 두 개의 문자가 없으면 우리는이 데이터베이스 테이블에 오는 데이터를 허용하지 않을 것입니다.
이 _str_, 당신은 잠시 동안이 일을 해왔습니다.
기본적으로
모델 객체를 실제 제작으로 가져 와서 인쇄하면
어떤 필드 (
이 경우 필드 하나만 있음) 가 표시됩니다.
그래서 우리는
문자열로 모델 객체를 변환 할 때,
우리는 어떻게 보이는지 결정할 수 있습니다.
그런 다음 우리는 자동차를 가지고 있으며
minLengthValidator, 200의 max_length
및 마일리지, 이는 정수 필드,
300 문자 필드 인 주석,
그리고 너무 외래 키를 가진 별명을 가지고있다.
이것은 일대 다 또는 다 대일
관계로, 다 대다가 아니라 Make에 대한 외래 키입니다.
그런 다음 우리는
당신이 메이크업을 삭제하면 정말 의미 on_delete CASCADE거야,
다음 해당 자동 항목이
자동으로 삭제됩니다.
이것은 매우 간단한 모델입니다.
실제로는 매우 간단합니다.
다시 한 번, 우리는
항상이 _str_ (self) 를 정의하므로
관리자
인터페이스에서처럼 표시하거나
그냥 인쇄하거나
모델 자체를 문자열로 변환하는 경우
이러한 필드 중 필드는닉네임 필드를 사용하여
최종 사용자에게 표시 할 수 있습니다.
이것이 모델 파일입니다. 의
다음 양식 파일을 살펴 보자.
그래서 양식 파일은 흥미 롭습니다.
왜냐하면 우리는 그
자체로 양식 인 양식을 보았습니다.
그러나 이것은 특별한 형태의
형태이며 ModelForm입니다.
즉, 우리는 일반적으로 다른 모델에서,
우리는이 모든 필드를 가지고,
우리는 그들을 넣고 우리가
문자 필드, positiveIntegerField가 모델 파일처럼 많이 보았다.
하지만 우리가 기본적으로 말하는 것은, 그거 알아요?
우리는 여기에 양식을 만들 것입니다.
실제로, 우리가하고 싶은 것은
Make 모델의 모든 필드를 가져 와서 필드를 형성하는 것입니다.
그래서 형태와 모델은 두 가지 다른 것입니다.
양식은보기와 템플릿 사이에있는
무언가이며, 보시다시피 자동으로 모델로 내려갑니다.
그래서 이것은 모든 필드를 만드는 것과 같습니다.
양식
객체는 모델과 연관 될 필요가 없기 때문에 양식을 만들어 보겠습니다.
그러나이 경우, 우리는
모델에서 양식 객체를 파생 할 것입니다.
그래서 대신 양식을 확장하는, 우리는 ModelForm을 확장하고 있습니다.
그래서 그것은 ModelForm이 있어야합니다,
그리고 이것은 우리가
우리의 모든 필드를 끌어 올거야 모델을 말한다 단지 일부 데이터입니다 메이크
모델이며, 그것은 단지 하나의 이름이 있습니다.
그게 다야 그래서 이것은 자동으로
우리가 그것을 변경하고 여기에 다른 필드를 추가
한 경우, 이 메이크업 양식은 자동으로 필드를해야합니다 양식을 생성하는 것입니다.
당신은 필드 목록을 줄 수 있습니다,
_ _ all _ _ _은
말할 신호와 같습니다.” 그냥 그들 모두를 줘.”
이제
생성되고
업데이트되거나 사용하지 않으려는 것과 같은 내부 사항이있을 수 있습니다.
이것이 양식입니다. 양식이 어떻게 작동하는지 기억하십시오.
우리는 전에 그것을 다루고 있습니다. 의 우리의 URL을 살펴 보자.
이제 이 많은
것들이 우리가 해온 것들과 꽤 비슷해 보입니다.
우리는 기본적으로
우리의 자동차 테이블 인 메인
테이블과 우리의 조회 테이블을 가지고 있습니다.
그런 다음 우리는 세 가지가 있습니다
,
모든 자동차 목록 메인 목록보기가 있습니다.
메인 Make 목록 뷰가 있습니다.
이 뷰는 모든 make를 나열합니다.
그런 다음
기본 키가없는 새 키를 만들 수 있습니다.
만드는 아이디어의 일부는
기본 키를 생성 할 새로운 것을 만드는 것이기 때문입니다.
그런 다음 우리는 업데이트 및 삭제를 할 것입니다.
그래서 우리는 읽기, 생성, 업데이트, 삭제가 있습니다.
그래서 그것은 정확히 cred는
아니지만, 이 네 가지를 모두 볼 수 있습니다.
그래서 우리는 뷰를 가지고,
우리는 우리가 그들
사이에 링크를 만들 수 있도록 우리는 우리의 뷰 자체와 우리의 템플릿에서 그들을 참조 할 수 있도록이 뷰의 이름을 지정합니다.
그래서 이것들은 매우
간단하며 모든 것이 다르지 않습니다.
그래서 우리가 views.py 에있을 때 재미가 일어나기 시작합니다.
그래서 로그인 믹스 인,
z 워크 스루 (walk-through) 의 작성자로부터
기억한다면, 이것을 뷰에 추가하기 만하면 기본적으로 로그인하지 않으면이 뷰에 도달
할 수 없다고 말하고 로그인하지 않으면
login.html 파일에 충돌합니다.완료.
그래서 로그인필수 믹스인은 우리가해야 할 전부입니다.
저자 z 샘플로 가면
내가 손으로 그랬던 것처럼 볼 수 있습니다.
당신은 손으로하고 싶지 않습니다.
로그인 mixin을 호출하면됩니다.
자, 이 메인 보기는 목록 뷰입니다.
그래서
이것이 어떻게 생겼는지 살펴 보겠습니다.
리스트 뷰입니다.
그래서 우리는 우리가 그러나 많은 감사를 취할
것입니다, 우리는 그 목록을
반복거야, 우리는 데이터베이스에서 모든 감사를 검색 할 것입니다.
그런 다음 우리는 자동 링크를 추가 할 것입니다,
다음
얼마나 많은 만드는 수와 메이크업의 링크 및 메이크업을 추가 할 수 있습니다.
그렇다면 자동차 템플릿, 자동차
다시 및 자동 목록으로 이동하겠습니다.
그래서 이것이 그것을 만드는 템플릿입니다.
그래서 우리가 얻을 수있는 몇 가지가있다,
우리는 자동 목록을 얻을.
이제 이것들의 이름은 여러분에게 강제되지
않지만, 잠시 후에 밝혀지는 관습이 있습니다.
우리는 정말 유용하게 보일 것입니다.
그래서 우리는 자동 목록을 얻을 것입니다.
우리는 우리의 견해로 돌아 가면,
우리는 우리가 말하는 것을 볼,
자동 테이블에서 모든 객체를 얻을,
모든 자동 클래스 객체는
auto_list로 컨텍스트에 과거, 그들 모두를 검색합니다.
이제 우리는 또한
작은 카운트를 표시 할 수 있기를 원합니다, 이것은 두 번째,
그래서 우리는 물어 것입니다,
모든 메이크 개체에 가서 나에게 그들의 목록을 제공하지 않습니다, 그들을
세고 나에게 숫자를 줄 수 있습니다.
그래서 카운트가 거기에 붙어 있고
카운트가 0보다 큰지 알 수 있습니다.
우리는 광고와 자동 버튼을 표시 할 수 있습니다,
그리고 그것은 또한 어딘가에 메이크업 카운트를 보여줍니다,
모든 메이크업을 볼, 메이크업을 추가,
그리고 메이크업 카운트는 여기에 나와있다.
그래서 우리가 넣은 또 다른 것입니다.
우리가 통과하려고하는 자동 목록 및
자동의 반복 변수는
바로 models.py 파일의 밖으로, 등 별도의 것들의 각각을 통해 갈 것입니다, 그리고 별명, 확인, 그.
모든 자동차가 가지고 있는 네 가지가 있습니다.
우리는 이 모든 것들을 인쇄하고 있습니다.
당신은 또한 기본 키를 얻을,
그래서 우리는 업데이트 URL을 만들거야,
그 URL은 자동차입니다: auto_update.
당신이 urls.py 보면 그래서,
우리는이 자동 업데이트가 보이는 참조,
이것은 우리에게 뷰에 대한
경로를 제공하지만, 특정 경로는
기본 키 하나의 매개 변수를
필요로하고, 그래서이 URL 템플릿 태그,
자동차가 있어야합니다 Auto.id.모델을 통해,
당신은 하나를 얻었고, 당신은 auto_create를 수행합니다.
그것은 꽤 간단합니다.
그러나 규칙 중 하나는
자동을 수행하기 전에 적어도 하나의 메이크업을
가져야한다는 것입니다. 왜냐하면 당신이 기억한다면, 자동을 추가하면이 드롭 다운 목록을 채울 수
있어야하고 make 테이블에서 가져 오기 때문입니다.
이것이 주요 견해입니다.
여기에 우리가 간다, 업데이트.
그것이 자동차보기입니다. 그리고 우리가 메이크 뷰를 할 경우,
우리는 같은 일을하고 있습니다.
우리가 가서 메이크업 목록을 보면,
우리는 같은 기본적인 일을하고,
모든 제조를보고,
지금 우리는 업데이트 및 삭제있어.
이렇게하면 셀 필요가 없습니다.
우리는 단지 모든 개체를 잡고
싶어, 우리는 메이크 목록에서 컨텍스트에 넣고
싶은, 그리고 우리는 HTML에 목록을 만들,
이것은 더 간단합니다.
메이크 목록을 통과하는 것입니다
. 컨텍스트를 통해 들어옵니다.
아무도 없다면, 우리는이 밖으로 인쇄하지 않고,
우리는 그것의 이름을 넣어,
우리는 업데이트 및
삭제로 이동 삭제 버튼을 가지고 있으며,
물론, urls.py,
그 또한 업데이트 및
삭제가 기본 키 요구 사항을 가지고
그 URL을
적절한 URL로 만들기 위해 여기에 전달해야하는 기본 키가 있습니다.
그런 다음 몇 가지 링크로
돌아가서 자동차,
보기 만들기, 새 메이크업을 추가 할 수 있습니다.
자, 그 모든 것을 취소하십시오.
그래서 그것은
자동차와 제조를 나열하기위한 views.py 입니다.
이제, 우리는 메이크업이 뷰를 만들려고합니다.
그래서 우리가 메이크 만들기 뷰를 살펴보면,
그것은 메이크업을 추가하는 것입니다.
이 양식을 만들 것입니다.
나는 이것을 여기에서 더 크게 만들 수 있습니다.
이 양식을 만들 수 있습니다,
우리는 시보레 (Chevy) 라는 것을 넣을 것입니다.
그래서 우리는이 양식을 만드는 방법이 필요합니다.
우리는 로그인이 필요하게 만들 것입니다,
우리는 사람들이 이것을 할 수 있도록하지 않을 것입니다.
우리는이 권리를 수행 한 후 우리는 우리가 사용하고자하는 템플릿, 그리고 success_url과 같은 클래스 넓은 몇 가지 변수를 가질 것입니다.
자, 당신이
그것을 제출하고 불평한다면, 그것을하지 않습니다.
그러나 일단 당신이 그것을 올바르게하면,
당신은 어디로 가고 싶습니까?
그럼 쉐보레, 나중에 어디로 가고 싶니?
이것은 컨트롤러 기능입니다.
자동 목록으로 돌아가고 싶습니다.
그래서 success_url은
자동으로 이동합니다. urls.py 에서이 메인 뷰입니다.
즉, 기본보기의
이름이고, 그래서 우리는 여기에 가면,
어떤 템플릿을 사용하고 어떤 success_url을 사용합니다.
우리는 GET 요청을 할 경우,
우리는
메이크업 양식에서 오는 메이크업을위한 양식을 구축 할 것입니다,
하지만
정말 하나의 문자열 필드입니다 메이크업 모델에서 온다.
그만큼 간단합니다. 우리는 이것을 재사용하고 있습니다.
우리는 단지
여기서 끌어 오는 형태를 만들어 봅시다.
모델이이 화면을 만드는 데 사용할 수 없기 때문에 양식을 전달해야합니다.
이 화면은 양식에서 나옵니다.
좋아요 우리는 템플릿을
살펴보면, 우리가 만드는 템플릿을
만들거나 양식을 만들 수 있습니다.
그래서 우리가 양식을 만들기 위해 사용하려고하는 템플릿입니다.
우리는 폼_as_table을 필요로 할 것입니다.
그래서 그것이 우리가 형태를 한 방식에서 나온 것입니다.
CSRF 토큰을 넣고
단락이나 테이블로 사용할 수있는 테이블을 만듭니다.
그러나 무엇이든이 양식 객체가 필요합니다.
따라서 양식 객체를 전달해야합니다.
그래서 여기에 우리는, 우리는 양식을 만들거야
그리고 우리는 양식 객체에거야,
그리고 우리는 self.template
autos.makeform html을 렌더링거야.
그런 다음 우리는 GET을 위해 그것을 반환 할 것입니다.
그런 다음 버튼을 누르면
제출 버튼, 메이크업을 추가,
우리는 제출 버튼을 누르면,
우리가 양식 게시물을 만들었기 때문에 게시물에 들어오고 있습니다.
그러지 마 그건 끔찍한 일이야
vi가 그렇게 할 때 나는 그것을 싫어한다.
하지만 여기서 우리는 돌아왔습니다.
그래 그래서 게시물이 들어오고,
Request.post는
양식에 의해 정의 된대로 이러한 키 - 값 쌍 인 모든 키 값 쌍을 가지고 있습니다.
그래서 우리는
요청 게시물에서 들어오는 초기 데이터로 make 양식을 만들어 봅시다.
양식이 그것을 생성 한 것을
감안할 때, 이 필드의 이름이 무엇인지 알고
있으며, 이것은 양식이 작동하는 방식 뒤에 숨어있는 것입니다.
그러나 양식 데이터가 유효한지 확인합니다. 즉,
모든 유효성 검사기 규칙이 따른다는 것을 의미합니다.
유효성 검사기 규칙이 준수되지 않은
경우, 양식이 유효하지 않은 경우,
우리는 단지 그것을 다시 보낼 것입니다.
그래서 여기에이 코드는,
이 양식은 유효한 코드가 아닙니다.
하나의 문자 A를 넣고 “제출”을 누르면 다시
돌아와서 폼과 모든
오류를 다시 렌더링합니다. 모든
것은이 양식 코드에 의해 모두 처리됩니다.
이 장고 양식 코드는 무엇이 잘못되었는지 파악합니다.
바로 조금
넘어서 더 빨리 돌아올 수 있습니다. 저기 가서
그것은 무엇이 잘못되었는지 알아내고,
오류 메시지를 만들고,
오류 메시지는 바로 여기 models.py 에서 왔습니다.
아니, 바로 여기
그런 다음
우리가
모델 양식에서 상속 한 형태이기 때문에 forms.py 를 통해 갔다. 그거 얻어?
그래서 멋지네요. 그래서 그것은 오류
조건이고, 그렇지 않으면 우리는 form.save 않습니다.
이제 정말
멋진 점은 이 양식이
모델 양식이고
필드 이름이 모델의
필드 이름과 동일하기
때문에 실제로 모델 자체를 저장하기 때문입니다.
따라서 양식에는
게시물 요청에서 가져온 모델 데이터가 포함 된 다음 저장합니다.
그러면 양식이 저장됩니다.
그것을 넣은 다음
요청 URL로 다시 리디렉션합니다.
이것은 꽤 간결한 나입니다.
이전 게시물 데이터를 가져 와서
나쁜 지 확인합니다. 나쁜 경우
양식을 다시 보내서 양식이
좋으면 저장
한 다음 성공 URL로 이동합니다.
그것은 아름다운 것입니다.
그러나 장고 (Django) 에서와 마찬가지로,
이것은 매우 간결한 일이라 할지라도 훨씬 더 까다 롭습니다.
당신은 거의 모든 다른 언어에서이 작업을 수행 한 경우,
당신은 코드 75 라인처럼 될 것입니다,
여기에 우리는 코드의 15 라인처럼있다.
그러나 장고에서는
거의 항상 더 간결한 방법이 있습니다.
우리는 일반적인 만들기보기가 있습니다.
이 일반 만들기보기, 장고.views.generic.edit에 대한 설명서를 살펴볼 수 있습니다.
그냥 가서 구글이 물건을 보자.
나는 항상 여기에 점을 넣었습니다. 이것이
실제 패키지와 패키지 내부의 클래스이기 때문에 보통 나를 바로
잡습니다. 오, 안돼
미안해 도메인 이름이라고
생각했기 때문에 검색이 작동하지 않았습니다.
하지만 지금은 장고를 말할 것입니다.
적어도
저를위한 검색과 관련이 있습니다.
일반 편집보기는 CreateView로 이동합니다.
그래서 당신은이 모든 것들을 읽을 수 있습니다
. 실제로 CreateView입니다.
이것에 대한 언급이 있습니까?
그래서 거기 가세요. 그것을 한 번 보세요.
자, 이것은
우리가 상속 한 다른 견해들처럼,
그 안에 많은 기능을 가지고 있습니다.
따라서 AutoCreate를 수행하려는 경우
이것이 전부입니다.
이제
모든 의도와 목적을 위해 AutoCreate 및
MakeCreate를 사용하여 똑같은 작업을 수행하십시오.
그래서
우리가 CreateView를 확장하고 있기 때문에 AutoCreate에서 무슨 일이 일어나는지
,
우리는 메타 데이터의 세 비트가, 우리는 우리가 사용할
모델, 우리가 원하는 모델의 필드,
그리고 어디로 갈 성공 URL이 있는지 알려줍니다.
그런 다음이 모든 코드를 생성합니다.
우리는 그 모든 코드를 상속했습니다.
MakeForm을 제외하고는 여기에 하드 코딩 된 것이 없다는 것을 알 수 있습니다.
지금, 우리는 심지어 자동을위한 양식을 만들 필요가 없습니다.
왜냐하면이 코드는 바로 여기에 양식을 구축하기 때문입니다.
뿐만 아니라
템플릿을 선택하기 위해 Auto 라는 이름을 사용합니다.
그래서
auto_form을 사용한다면 이것을 사용해야합니다.
나는 이것을 사용한다. 그것은 나의 기본 부트 스트랩이다.
그것에 대해 너무 걱정하지 마십시오.
그래서 그것은
사용할 템플릿의 이름을 알고 있습니다. 템플릿을
파생시키기 때문에 여기에서 사용할 템플릿을 알려야합니다.
auto_form.html 템플릿입니다.
꽤 멋지네요 꽤 멋지고 멋지다.
그래서 그것은 자동으로 그 성공_url을 찾습니다.
그래서 이것이 필요한 전부입니다.
사실, 이
MakeCreate에서이 모든 코드를 여기에서 여기로 삭제할 수
있지만 대신 CreateView를 확장하여 CreateView를 수행하십시오.
그래서 저는 여러분께 이 사실을 보여드리고 있습니다. 왜냐하면 여러분이
정말로 무슨 일이 벌어지고 있는지 보길 원하기 때문입니다.
그러나 이것은 코드를 작성하는 방법이 아닙니다.
이것이 코드를 작성하는 방법입니다.
이제
업데이트를 수행하는 어려운 방법을 보여 드리고자합니다.
그렇다면 업데이트란 무엇입니까? 의 코드를 살펴 보자.
그럼 볼 수 만드는 살펴 보자.
업데이트는
우리가 여기에 가서
그 MakeUpdate에 갈 것입니다 때 일어나는 일이다.
그래서 여기 메이크 업데이트입니다, 여기 urls.py. 이게 바로 이거에요
내 말은, 기본 키 업데이트를 찾으십시오.
그러면 여기 아래를 보면
자동차 조회가 될 것입니다.
그래서 저는 시보레 하나를 업데이트 할 것입니다.
이전 데이터를 읽고
사용자에게 보여 주어야하며
업데이트 한 다음
유효성 검사 오류를 확인하고 제출해야합니다.
그런 다음 성공_url로 우리를 다시 리디렉션합니다.
그래서 우리가 견해를 보면,
우리는 다시 한번
예고하고, 이것을 할 수 있는 훨씬 쉬운 방법이 있습니다.
그래서 우리는 이러한 변수 또는
우리가 원하는 템플릿 success_url, 그리고 모델을 설정합니다.
그런 다음 GET 요청이 있습니다.
urls.py 에서이 int가 있기 때문에: pk,
이 pk 값으로 전달되었습니다.
자, 이 get_object_or_404는 정말 멋지다.
이 get_객체_OR_404 (자기 모델 pk = pk).
그것은 우리가 PK 같음을 전달하는이 매개
변수이며, 그들이 같은 이름이라는 것이 일반적이지만, 이 get_object_or_404에 대한 매개 변수입니다.
이 두 번째 것은
우리의 get에 호출 된 매개 변수입니다.
자체. 모델은 물론 제작입니다.
get_Object_OR_404는 기본적으로, 나는이 업데이트를 할 것이다, 의 업데이트를 수행 할 수 있도록 가자, 있는지 확인합니다.
그것이하고있는 일은이 숫자,
여기 세 가지, 자동/조회/3/업데이트를 취하고
이전 데이터를 검색하는 것입니다.
자,
실수로
데이터베이스에 존재하지 않는 숫자 (
예: 9,999) 가 있고 그 번호를 요청하면 어떻게됩니까?
나는 “페이지를 찾을 수 없습니다 404.”
그래서 여기서 일어나는 일은 어떻게 든 당신이 말합니다. “이봐,
이 객체를로드하고 저와 변수에
주거나, 만들거나, 아니면 그냥 날려 404 오류를 보냅니다.”
그래서 이것은 무슨 일이 일어나고 있는지 알려줍니다.
“No Make는 주어진 쿼리와 일치하지 않습니다.”
자, 일반적으로 당신은 이것들을 손으로 입력하기로되어 있지 않습니다.
세 가지가 작동하므로 폭발하지 않습니다.
따라서 get_object_or_404는
이전 데이터를로드 한 다음
해당 데이터를 사용하여 보호하거나 폭발하는 방법입니다.
그러니 그 시점에서 더 이상 가지 마십시오.
이제, 우리는
양식을 만들거야 우리는 이전 데이터로 채울 것입니다.
그래서 인스턴스, 인스턴스가 만드는 것.
이것이 바로 그 대상입니다.
메이크폼을 만듭니다. 여기 메이크 폼이 있습니다.
모델의 모든 필드는 모델에서
상속 메이크.
그런 다음
우리가 방금 살펴본 make_form.html 템플릿에 전달하십시오.
이 양식은 우리가 필요로하는 전부입니다.
이것은 매우 일반적인 모습입니다.
정말 너무 신경 쓰지 않습니다.
모델에서 파생 된이 형식으로 거의 인코딩됩니다.
그런 다음 물론, 우리는 많은 것들을
입력하고 우리는 “제출”을 누르십시오.
그것은 Create와 똑같은
일을하고 잘합니다.
먼저
기본 키로 물건을 게시하기 때문에 get 또는 404를해야합니다.
업데이트 할 객체가 있는지 확인하기 위해로드합니다.
그런 다음
해당 데이터베이스에서 새 make 양식을 만든 다음 변경합니다.
그래서 이것은 시작 데이터와
같지만 데이터로 변경합니다.
그래서이 특별한 경우에,
시보레는 데이터베이스의 이전 값입니다.
Bowtie라고 말하면
포스트 랩
Bowtie를 요청하면 시보레가 시작되지만이 양식
객체에서는 Bowtie가 될 것입니다.
물론 유효하지 않은 경우
바로 여기에 오류 메시지를 반환합니다.
그것이 유효하다면, 우리는
그것을 저장할 것이고, 그래서 이 새로운 보타이가
거기에 저장될 것입니다.
우리는 우리의 제조를
볼 경우 그래서, 우리는 지금 Bowtie의 것을 볼 수,
우리는 성공 URL로 리디렉션거야.
자, 이 시점에서,
다음에 무슨 일이 일어날지 예측할 수 있기를 바랍니다.
자동 업데이트, 업데이트 뷰,
일반 편집 뷰를 확장합니다.
그것은 그것이 어떤 모델인지,
당신이 원하는 필드, 그리고
그것이 성공할 때 어디로 가야하는지 말합니다.
그런 다음 여기에있는 모든 것을 수행합니다.
말 그대로, 나는 가서
삭제 메이크업에 대한 정확한 동일한 단어를 말할 수 있습니다,
이는 당신이 여기에
가서 삭제 한 다음 취소 할 때 무슨 일이 일어나고,
확인 삭제가있다.
이 템플릿의 이름은 무작위로 선택되지 않습니다,
그것은 확인이라고합니다. 삭제,
모델 확인.delete.
저기 가세요 CSRF 토큰이 필요합니다.
당신은 이것에서 개체로 메이크업을 건네줍니다.
그래서이 출력을 생성합니다.
이 양식에는 아무 형태도 없습니다.
객체 또는 404에 의해로드되는 make가 있으며 makein을 전달하고 렌더링합니다.
그런 다음 게시물이 발생하면 검색합니다.
거기에 있으면 404가 다시
잘못된 데이터를 확인하고 삭제 한
다음 성공 URL로 호핑합니다.
다음에 할 일을 추측하는 데 많은 시간이 걸리지 않습니다.
즉, 삭제보기를 확장하면
모든 코드를 무료로 얻을 수 있습니다.
어떤 모델
필드와 성공을 위해 어디로 가야하는지 알려주면됩니다.
그래서 중요한 것은,
당신의 숙제를 할 때,
여러분 중 몇몇은
이 모든 것을 복사해서 붙여넣을 것이라고 확신합니다. 그건 틀렸어 자동 생성
, 만들기 업데이트 및
만들기삭제는
자동 생성, 자동 업데이트 및 자동 삭제와 같은 짧아야 합니다.
당신은 이러한 일반적인
편집보기를 많이 할 거라고하고
우리는 또 다시 CRUD를 할 것입니다,
당신은 정말 코드의 15 줄을 작성하고 싶지 않아 때문에.
정말 간단하게 유지할 수 있다면 불필요한 반복, 불필요한 잘라내기 및 붙여 넣기 및 코드 변경입니다.
그래서
기본적으로이 코드를 사용하여 모델에 대한 유효성 검사를 통해 CRUD 양식과 CRUD 기능의 전체 세트를 빌드 할 수 있습니다. 그런 다음 forms.py
가 필요하지 않습니다. models.py
그래서 당신이 당신의 자동차를하고있는 경우에,
당신은 내가
forms.py 만들고 있다면 내가 실수했다고 생각할 것입니다.
난 그냥이 views.py 이러한 방법을 사용하는 경우,
대신 그들 모두가 MakeUpdate처럼 보이게하는,
당신은 자신에게 많은
시간과 에너지를 절약 할거야 우리는 이러한 것들을 수정해야합니다.
모든 변경 사항을 찾아 수정하는 것이 훨씬 쉽습니다.
이것이 Autos의 샘플 코드를 살펴보는 것입니다.
당신은 이것에 대한 과제를 할
것이지만 모든 것을 복사하지 마십시오.
나는 이것을 설정하여
당신이 무슨 일이 일어나고 있는지,
특히 견해에서 이해하는 데 시간을 할애했습니다.
URL은 복사
할 모델, 복사
할 URL,
뷰는 복사하는 것이 아니라
실제로 무슨 일이 일어나고 있는지
파악하고이 모든 작업을 수행하는 더 쉽고 간결한 방법을 제시합니다.
장고는
이 시점에서 정말 아름답게 보이기 시작했습니다.
그래서 이것이 도움이되기를 바랍니다. 건배