서문: 이 블로그는 이전 블로그 djangoAdvanced에 대한 보충 글입니다.
1. 렌더링
프론트엔드 인터페이스는 상대적으로 단순하고(못생겼음) 두 가지가 있습니다. 기능:
데이터베이스에서 책 제목 검색 예: 새 책 A
양식에 책 제목을 입력하고 선택 출판사, 저자 선택(객관식) 입력 후 새 도서 생성을 클릭하여 제출하면 데이터베이스에 데이터가 생성됩니다.
2. 구현
먼저 데이터베이스 데이터를 기반으로 페이지에 책 제목을 인쇄하는 첫 번째 기능을 구현해 보겠습니다.
1. URL 추가route
url(r'^book/', views.book),
2. views.py에서 책 메소드 정의
Django는 데이터를 얻기 위해 기본적으로 GET 메소드를 사용하는데, 나중에 구현할 두 번째 함수처럼 데이터를 생성/수정하려면 POST 메소드를 사용해야 합니다.
def book(request): books = models.Book.objects.all() #找到所有的书 publisher_list = models.Publisher.objects.all() author_list = models.Author.objects.all() print("---->:", request) return render(request, "app01/book.html", {"books":books, "publishers":publisher_list, "authors":author_list})
3. template/app01 아래에 book.html을 만듭니다.
책이 데이터베이스에 있습니다. 프런트엔드 페이지에 책 제목을 표시하기 위해 html에서 루프 를 사용하는 모든 책에 대한 개체 모음입니다.
<h2 id="书列表">书列表:</h2> <ul> {% for book in books %} <li>{{ book.name }}</li> {% endfor %} </ul>
다음으로 두 번째 함수를 구현하고 데이터를 생성합니다.
먼저 프론트엔드 HTML을 살펴보겠습니다:
<form method="post" action="/payment/book/"> {% csrf_token %} book name:<input type="text" name="name"/> <select name="publisher_id"> {% for publisher in publishers %} <option value="{{ publisher.id }}">{{ publisher.name }}</option> {% endfor %} </select> <select name="author_ids" multiple="multiple"> {% for author in authors %} <option value="{{ author.id }}">{{ author.first_name }}</option> {% endfor %} </select> <div> <input type="submit" value="创建新书"/> </div> </form>
참고:
데이터를 생성하기 위한 것이므로 제출 방법은 반드시 post여야 합니다. action="/pay/book/"은 URL로 book 방식으로 데이터를 제출한다는 의미이며, 해당 데이터는 에 캡슐화되어 있습니다. 요청 매개변수.
퍼블리셔를 선택할 때 퍼블리셔 이름을 백엔드에 전달해야 하나요?? 사실 전혀 필요하지 않고 그냥 하면 됩니다. 선택한 ID를 백엔드에 전달합니다. 따라서 게시자의 ID를 얻기 위해 옵션 태그에 속성 값을 추가했습니다. 제출을 클릭하여 데이터를 제출하면 값의 ID가 name 속성에 제출됩니다. 그런 다음 선택 태그, 이름 속성이 데이터를 배경으로 제출합니다.
html 코드의 첫 번째 줄에 {% csrf_token %}이 있는 것을 볼 수 있는데, 이것이 무엇을 의미하는지 아직 모르겠습니다~_ ~, 저는 이 코드를 삭제하면 데이터가 제출되지 않습니다!!
백그라운드북 방법을 살펴보겠습니다
def book(request): if request.method == "POST": #若是创建书的数据 print(request.POST) book_name = request.POST.get("name") publisher_id = request.POST.get("publisher_id") # 即使在前端页面选择多个作者只会返回一个值,只能取到最后一个作者的id #author_ids = request.POST.get("author_ids") author_ids = request.POST.getlist("author_ids") #getlist 可取出所有作者的id #生成一个书的对象 new_book = models.Book( name = book_name, publisher_id = publisher_id, publish_date = "2017-3-18" ) new_book.save() #同步到数据库 #new_book.authors.add(1,2) 添加作者 new_book.authors.add(*author_ids) #author_ids为列表,需在前面加上*转化为id print("------->>:", book_name,publisher_id,author_ids) books = models.Book.objects.all() publisher_list = models.Publisher.objects.all() author_list = models.Author.objects.all() print("---->:", request) return render(request, "app01/book.html", {"books":books, "publishers":publisher_list, "authors":author_list})
프론트엔드 인터페이스에서 책 제목을 입력할 때: 신간 A, 두 번째 출판사 선택, 2, 3저자를 선택하고, 보기 편의상 백그라운드에서 인쇄합니다. :
<QueryDict: {'name': ['新书A'], 'csrfmiddlewaretoken': ['V9OdHSJ10OFSq3r vI41tggns1W2VxwV'], 'publisher_id': ['2'], 'author_ids': ['2', '3']}> ------->>: 新书A 2 ['2', '3'] ---->: <WSGIRequest: POST '/payment/book/'> [18/Mar/2017 14:06:23] "POST /payment/book/ HTTP/1.1" 200 1335
인쇄 결과에 따르면 Author_ids가 목록이라는 것을 알 수 있습니다. 책에 저자를 추가할 때 다음 코드를 사용합니다.
new_book.authors.add(*author_ids)
왜 목록 앞에 *를 추가해야 하나요? *를 추가하지 않으면 오류가 발생합니다! *를 추가하는 것은 목록 형식 ["2", "3"]을 작성자 ID 형식 2,3으로 변환하는 것입니다.
A가 방금 만든 새 책을 보려면 관리자 배경에 로그인하세요.
위 내용은 Django 고급 학습 기록의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

Python은 데이터 과학, 웹 개발 및 자동화 작업에 적합한 반면 C는 시스템 프로그래밍, 게임 개발 및 임베디드 시스템에 적합합니다. Python은 단순성과 강력한 생태계로 유명하며 C는 고성능 및 기본 제어 기능으로 유명합니다.

2 시간 이내에 Python의 기본 프로그래밍 개념과 기술을 배울 수 있습니다. 1. 변수 및 데이터 유형을 배우기, 2. 마스터 제어 흐름 (조건부 명세서 및 루프), 3. 기능의 정의 및 사용을 이해하십시오. 4. 간단한 예제 및 코드 스 니펫을 통해 Python 프로그래밍을 신속하게 시작하십시오.

Python은 웹 개발, 데이터 과학, 기계 학습, 자동화 및 스크립팅 분야에서 널리 사용됩니다. 1) 웹 개발에서 Django 및 Flask 프레임 워크는 개발 프로세스를 단순화합니다. 2) 데이터 과학 및 기계 학습 분야에서 Numpy, Pandas, Scikit-Learn 및 Tensorflow 라이브러리는 강력한 지원을 제공합니다. 3) 자동화 및 스크립팅 측면에서 Python은 자동화 된 테스트 및 시스템 관리와 같은 작업에 적합합니다.

2 시간 이내에 파이썬의 기본 사항을 배울 수 있습니다. 1. 변수 및 데이터 유형을 배우십시오. 이를 통해 간단한 파이썬 프로그램 작성을 시작하는 데 도움이됩니다.

10 시간 이내에 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법은 무엇입니까? 컴퓨터 초보자에게 프로그래밍 지식을 가르치는 데 10 시간 밖에 걸리지 않는다면 무엇을 가르치기로 선택 하시겠습니까?

Fiddlerevery Where를 사용할 때 Man-in-the-Middle Reading에 Fiddlereverywhere를 사용할 때 감지되는 방법 ...

Python 3.6에 피클 파일로드 3.6 환경 보고서 오류 : modulenotfounderror : nomodulename ...

경치 좋은 스팟 댓글 분석에서 Jieba Word 세분화 문제를 해결하는 방법은 무엇입니까? 경치가 좋은 스팟 댓글 및 분석을 수행 할 때 종종 Jieba Word 세분화 도구를 사용하여 텍스트를 처리합니다 ...


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.
