python Django 프레임 워 크 빠 른 입문 튜 토리 얼(백 스테이지 관리)
Django 는 오픈 소스 코드 의 웹 응용 프레임 워 크 로 Python 에서 작성 합 니 다.
Django 는 BSD 저작권 을 준수 하 며 2005 년 7 월 에 처음 발 표 했 고 2008 년 9 월 에 첫 번 째 정식 버 전 1.0 을 발표 했다.
Django 는 모델(Model),보기(View),템 플 릿(Template)등 MVT 의 소프트웨어 디자인 모델 을 사용 했다.
공식 문서 참조:Django 공식 문서https://docs.djangoproject.com/zh-hans/3.2/
다음은 python Django 프레임 워 크 의 빠 른 입문 을 보 겠 습 니 다.절 차 는 다음 과 같 습 니 다.
첫 번 째 단계:프로젝트 생 성 및 실행
Django 를 처음 사용 하려 면 초기 설정 을 고려 해 야 합 니 다.즉,Django 를 만 드 는 것 을 자동 으로 생 성 해 야 합 니 다.
항목 의 코드.
명령 행 cd 에서 코드 를 저장 할 디 렉 터 리 까지 다음 명령 을 실행 합 니 다.
django-admin startproject BookManage
프로젝트 디 렉 터 리 에 들 어가 면 디 렉 터 리 구 조 는 다음 그림 과 같 습 니 다.디 렉 터 리 설명:
manage.py:명령 행 도구 로 Django 프로젝트 를 다양한 방식 으로 대화 할 수 있 습 니 다.
내부 디 렉 터 리:프로젝트 의 진정한 Python 패키지
__init__.py:파 이 썬 에 게 이 디 렉 터 리 를 파 이 썬 패키지 로 봐 야 한다 고 알려 주 는 빈 파일
settings.py:프로젝트 설정
urls.py:프로젝트 의 URL 설명
프로젝트 WSGI 호 환 웹 서버 입구
두 번 째 단계:응용의 창설 과 사용
(1)첫 번 째 프로그램 만 들 기
Django 는 응용 프로그램의 기본 디 렉 터 리 구 조 를 자동 으로 생 성 할 수 있 는 실 용적 인 프로그램 을 가지 고 있 기 때문에 코드 를 만 드 는 데 전념 할 수 있 습 니 다.
디 렉 터 리 생 성 입 니 다.
한 항목 에서 하나 에서 여러 개의 응용 프로그램 을 만 들 수 있 고 모든 응용 프로그램 은 하나의 업무 처 리 를 할 수 있 습 니 다.
응용 프로그램 생 성 명령:
python3 manage.py startapp bookApp
다음 그림 과 같은 디 렉 터 리 구 조 를 사용 합 니 다:(2)첫 번 째 보기 함수 작성
파일 bookApp/views.py 를 열 고 다음 Python 코드 를 넣 습 니 다.
from django.shortcuts import render
# Create your views here.
from django.http import HttpResponse
def index(request):
return HttpResponse(" ")
(3)경로 규칙bookApp 디 렉 터 리 에 URL conf 를 만 들 고 urls.py 라 는 이름 을 만 듭 니 다.
# bookApp/urls.py
from django.conf.urls import url
from . import views
urlpatterns = [
# bookApp , index, url ;
url(r'^$', views.index, name='index'),
]
프로필 북 매 니 지 먼 트/settings 에서 찾 을 수 있 는 주 파일 은 북 매 니 지 먼 트/urls.py 이기 때문에 이 파일 에 있 습 니 다.url 규칙 추가:
# BookManage/urls.py
from django.conf.urls import url
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
# url book , bookApp.urls url
.
url(r'^book/', include('bookApp.urls')),
]
include()함 수 는 다른 URL confs 를 참조 할 수 있 습 니 다.(4)효과 전시
시작 서버
python3 manage.py runserver
url 주소:http://127.0.0.1:8000/book/홈 페이지 내용 을 보면 도서 관리 시스템 이 성공 합 니 다.
STEP 3:프로젝트 의 데이터베이스 모델
(1).데이터베이스 생 성
MariaDB [(none)]> create database BookManage charset=utf8;
(2).MySQL 데이터베이스 설정 연결settings.py 파일 에서 DATABASES 항목 을 통 해 데이터베이스 설정
Django 가 지원 하 는 데이터 베 이 스 는 sqlite,my sql 등 주류 데이터 베 이 스 를 포함한다.
Django 기본 사용**SQLite**데이터베이스
Django 데이터베이스 설정 참고 문서
이 중 ENGINE 은 데이터베이스 백 엔 드 로 설정 해 사용한다.내 장 된 데이터베이스 백 엔 드:
'django.db.backends.postgresql'
'django.db.backends.mysql'
'django.db.backends.sqlite3'
'django.db.backends.oracle'
Bookmanage/settings.py 파일 에서 DATABASES 항목 을 통 해 데이터베이스 설정:
# .......
# sqlite ;
# DATABASES = {
#
'default': {
#
'ENGINE': 'django.db.backends.sqlite3',
#
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
#
}
# }
# Mysql ;
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'BookManage',
'USER': 'root',
'PASSWORD': 'westos',
'HOST': 'localhost',
'PORT': '3306',
}
}
# .......
: Django MySQL PyMySQL , 。
pip install pymysql
북 매 니 지 먼 트 열기/init__.py,다음 코드 를 써 서 pymysql 가 져 오기:
import pymysql
# MySQLdb Python2.*, 3. PyMySQL 。
pymysql.install_as_MySQLdb()
(2).데이터베이스 모델 만 들 기본 예시 에서'도서-영웅'정보의 유 지 를 완성 하려 면 두 가지 데 이 터 를 저장 해 야 한다.도서,영웅
도서 표 구조 디자인:표 명:Book
도서 명:title
도서 발표 시간:pubdate
영웅 표 구조 디자인:표 명:Hero
영웅 이름:name
영웅 성별:성별
영웅 소개:hcontent
hbook
도서-영웅 의 관 계 는 한 쌍 이 많다
# bookApp/models.py
from django.db import models
# Create your models here.class Book(models.Model):
# : id
title = models.CharField(max_length=20)
pub_date = models.DateTimeField()
#
def __str__(self):
return "%d" % self.title
# , :bookApp_book
class Meta:
db_table = "books"
class Hero(models.Model):
name = models.CharField(max_length=20)
gender = models.BooleanField()
content = models.CharField(max_length=100)
Book = models.ForeignKey('Book', on_delete=False)
def __str__(self):
return "%s" % self.name
# , :bookApp_hero
class Meta:
db_table = "heros"
(3).데이터베이스 테이블 생 성활성화 모델:settings.py 파일 을 편집 하여 INSTALLED 에 적용APPS 중
# BookManage/settings.py
# Application definition
INSTALLED_APPS = [
# .......
'django.contrib.staticfiles',
# app
'bookApp',
]
이전 파일 생 성:모델 클래스 에 따라 sql 문 구 를 생 성 합 니 다.
python manage.py makemigrations
생 성 된 이전 파일 은 다음 과 같 습 니 다.실행 이전:sql 문 구 를 실행 하여 데이터 시트 생 성
python manage.py migrate
데이터베이스 에서 데이터베이스 시트 를 만 드 는 데 성 공 했 습 니까?
$ mysql -uroot -pwestos
MariaDB [(none)]> use BookManage
MariaDB [BookManage]> show tables;
MariaDB [BookManage]> desc books;
+----------+-------------+------+-----+---------+----------------+
| Field
| Type
| Null | Key | Default | Extra
|
+----------+-------------+------+-----+---------+----------------+
| id | int(11)
| title | varchar(20) | NO
| pub_date | datetime
| NO
| NO
| PRI | NULL | auto_increment |
| | NULL | |
| | NULL | |
+----------+-------------+------+-----+---------+----------------+
MariaDB [BookManage]> desc heros;
+---------+--------------+------+-----+---------+----------------+
| Field
| Type
| Null | Key | Default | Extra
|
+---------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(20) | NO | | NULL | |
| gender | tinyint(1) | NO | | NULL | |
| content | varchar(100) | NO | | NULL | |
| Book_id | int(11) | MUL | NULL | |
| NO
+---------+--------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)
(4).데이터베이스 모델 기본 조작현재 대화 형 Python 셸 에 들 어가 Django 가 제공 하 는 무료 API 를 사용 합 니 다.
python manage.py shell
필요 한 가방 도입:
from bookApp.models import Hero, Book
모든 도서 정보 조회:
Book.objects.all()
새 책 정보:
from datetime import datetime
book = Book(title=" ", pub_date=datetime(year=1990,month=1,day=10))
book.save()
도서 정보 찾기:
book = Book.objects.get(pk=1)
book.id
book.title
book.pub_date
수정 도서 정보:
book.title = " "
book.save()
도서 정보 삭제:
book.delete()
관련 개체 추가
#
book = Book(title=" ", pub_date=datetime(year=1990,month=1,day=10))
book.save()
#
info1 = " , , > ,
“ ” , 。"
info2 = " , ( ) , “ ”,>
, “ ” 。"
hero1 = Hero(name=" ", gender=False, info=info1)
hero2 = Hero(name=" ", gender=False, info=info2)
hero1.Book=book
hero2.Book=book
hero1.save()
hero2.save()
관련 집합 획득:현재 북 대상 의 모든 hero 를 되 돌려 줍 니 다.
book.hero_set.all()
Hero 가 존재 합 니 다.Book 대상 이 있어 야 합 니 다.관련 데 이 터 를 만 들 었 습 니 다.
book.hero_set.create(name=" ",
gender=True,
content=" “ ” ")
네 번 째 단계:배경 관리자 사이트 관 리 를 사용 합 니 다.사 이 트 는'콘 텐 츠 발표(백 스테이지 관리)'와'공공 방문(프론트 관리)'두 부분 으로 나 뉜 다.
'내용 발표'의 부분 은 내용 을 추가,수정,삭제 하 는 것 을 책임 지고 이런 중복 기능 을 개발 하 는 것 은 단 조 롭 고 지루 하 며 창조력 이 부족 하 다.
라 는 작업 을 했다.
따라서 Django 는 정 의 된 모델 클래스 에 따라 관리 모듈 을 자동 으로 생 성 합 니 다.
Django 프레임 워 크 에는 매우 강력 한 응용 기능 이 있 습 니 다.자동 관리 인터페이스 입 니 다.웹 플랫폼 관리자 에 게 자주 사용 되 고 전 체 를 관리 합 니 다.
웹 플랫폼.
기본적으로 settings.py 프로필 에 INSTALLEDAPPS 는 다음 과 같은 응용 프로그램 을 포함 하고 후속 개발 을 위해 묵
이 프로그램 들 이 모두 안에 포함 되 어 있다 는 것 을 인정 하 다.
(1).데이터베이스 이전
이 Django 자체 프로그램 을 사용 하려 면 데이터베이스 에 데이터 시트 를 만들어 야 사용 할 수 있 습 니 다.
python manage.py makemigrations
python manage.py migrate
(2).관리자 사용자 만 들 기
# 、 、
python manage.py createsuperuser
서버 를 시작 합 니 다."127.0.0.1:8000/admin"을 통 해 위 에 만 든 사용자 이름,비밀 번 호 를 입력 하여 로그 인 을 완료 합 니 다.관리 사이트 에 들 어가 면 기본적으로 groups,users 를 관리 할 수 있 습 니 다.
(3).관리 인터페이스 현지 화
settings.py 파일 을 편집 하고 인 코딩,시간 대 를 설정 합 니 다.
LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'Asia/Shanghai'
(4).사용자 정의 모델 백 스테이지 관리bookapp/admin.py 파일 열기,등록 모델
from django.contrib import admin
from models import Book
admin.site.register(Book)
관리 페이지 를 새로 고치 면 Book 의 데 이 터 를 추가 삭제 하고 검사 할 수 있 습 니 다.문제 1:python 2 버 전에 서 str 방법 에서 중국 어 를 되 돌려 주면 수정 과 추가 시 ascii 의 오 류 를 보고 합 니 다.
str()방법 에서 문자열 끝 에'encode(utf-8)'를 추가 하여 문자열 인 코딩 을 합 니 다.
문제 2:백 스테이지 관리 시 북 관 리 는 영어 로 표시 되 는데 어떻게 중국어 로 변 합 니까?
# bookApp/models.py
class Book(models.Model):
# ........
# , :bookApp_book
class Meta:
db_table = "books"
#
verbose_name = ' '
#
verbose_name_plural = ' '
(5).사용자 정의 관리 페이지
Django 는 admin.ModelAdmin 클래스 를 제공 합 니 다.
ModelAdmin 의 하위 클래스 를 정의 하여 모델 이 Admin 인터페이스 에 표시 되 는 방식 을 정의 합 니 다.
# bookApp/admin.py
from django.contrib import admin
from .models import Book, Hero
#
class BookAdmin(admin.ModelAdmin):
list_display = ['pk', 'title', 'pub_date']
list_filter = ['title']
search_fields = ['title']
list_per_page = 10# fields = ['pub_date', 'title']
fieldsets = [(' ', {'fields': ['title']}),
(' ', {'fields': ['pub_date']}), ]
#
class HeroAdmin(admin.ModelAdmin):
list_display = ['id', 'name', 'gender', 'content']
list_filter = ['name']
search_fields = ['name']
list_per_page = 10
#
admin.site.register(Book, BookAdmin)
admin.site.register(Hero, HeroAdmin)
목록 페이지 속성
ist_display: ,
list_display = ['pk', 'title', 'pub_date']
list_filter: ,
list_filter = ['title']
search_fields: ,
search_fields = ['title']
list_per_page: ,
list_per_page = 10
페이지 속성 추가,수정
fields:
fields = ['pub_date', 'title']
fieldsets : , : fields fieldsets .
fieldsets = [(' ', {'fields': ['title']}),
(' ', {'fields': ['pub_date']}), ]
관련 대상
Hero 모델 류 에 대해 서 는 두 가지 등록 방식 이 있 습 니 다.
방식 1:Book 모델 클래스 와 같 음
방식 2:관련 등록
admin.StackedInline:내장 관련 등록 클래스
admin.TabularInline:표 관련 등록 클래스
# bookApp/admin.py
# class HeroInline(admin.TabularInline):
class HeroInline(admin.StackedInline):
model = Hero
extra = 2
class BookAdmin(admin.ModelAdmin):
list_display = ['pk', 'title', 'pub_date']
# .......
inlines = [HeroInline]
다음 과 같은 효과 보이 기:불 값 표시
,
# bookApp/models.py
class Hero(models.Model):
#
.......
def sex(self):
if self.gender:
return
" "
else:
return
" "
admin sex gender
# bookApp/admin.py
class HeroAdmin(admin.ModelAdmin):
list_display = ['id', 'name', 'sex', 'content']
다음 과 같은 효과 보이 기:python Django 프레임 워 크 의 빠 른 입문(백 스테이지 관리)에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 python Django 입문 내용 은 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.