기술나눔

"Django"에는 자체 백엔드가 제공됩니다.

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina


테마: 스마트블루

이 기사 소개

좋아요+팔로우+수집=배움

00.png

이전 글에서 다뤘지만 Django 작동하다MySQL 모델을 생성하는 방법과 데이터베이스를 추가, 삭제, 수정, 쿼리하는 방법을 설명합니다. 하지만 데이터를 수정할 때마다 코드를 작성해야 하니 다소 번거롭습니다.

더 간단한 방법이 있나요?

일부, 일부,Django 실제로 그래픽 인터페이스인 백엔드가 함께 제공되며, 그 위에서 다양한 데이터 콘텐츠를 쉽게 조작할 수 있습니다.

다음으로 이 내장 백엔드를 사용하는 방법에 대해 이야기해 보겠습니다.

백그라운드 라우팅 주소 구성

실제로 생성 Django 프로젝트 중에 우리는 이미 백그라운드에서 라우팅 주소를 구성했습니다.

이전 글을 차근차근 따라하시면 ​​백그라운드 라우팅이 삭제될 수 있습니다. 상관없습니다. 그냥 만들어 보세요.

프로젝트 열기 urls.py 파일, 발견됨urlpatterns 이 변수는 백그라운드 라우팅을 채우는 데 사용됩니다.

```파이썬

urls.py 프로젝트의 라우팅 파일

django.urls에서 가져오기 경로 blog.views에서 가져오기 blogIndex

urlpatterns = [ # 다른 경로는 생략 # 다음 문장은 백그라운드 설정을 위한 라우팅 경로입니다('admin/', admin.site.urls) ] ```

구성이 완료되면 프로젝트를 시작하고 브라우저에서 엽니다. http://127.0.0.1:8000/admin/ 백그라운드에서 로그인 페이지를 볼 수 있습니다.

01.png

관리자 계정 만들기

로그인 페이지가 있는 경우 해당 계정이 있어야 로그인할 수 있습니다.

따라서 먼저 슈퍼 관리 계정을 생성해야 합니다.

터미널을 열고 프로젝트 디렉터리에 진입한 후 다음 명령어를 입력하여 슈퍼 관리 계정을 생성합니다.

python manage.py createsuperuser

그런 다음 터미널은 이 정보 줄을 사용자에게 반환하여 최고 관리 사용자 이름(계정)을 입력하도록 요청합니다.

Username (leave blank to use 'xxx'): admin

'xxx' 여기 내 컴퓨터 이름이 있는데, 콜론 뒤에 슈퍼 관리 계정을 입력하시면 됩니다.제가 여기에 입력한 내용은admin

사용자 이름을 입력한 후에는 이메일 주소를 입력하라는 메시지가 계속 표시됩니다.

Email address: 123@qq.com

이메일 주소를 입력한 후 비밀번호를 두 번 입력하라는 메시지가 표시됩니다.

  1. Password:
  2. Password (again):

여기에 입력하는 비밀번호는 12345678, 너무 흔한 비밀번호가 똑똑히 생각나는데, 나는 y를 입력하고 그렇게 간단한 비밀번호를 고수합니다.

  1. This password is too common.
  2. This password is entirely numeric.
  3. Bypass password validation and create user anyway? [y/N]: y
  4. Superuser created successfully.

보다 Superuser created successfully. 이 문장은 계정이 성공적으로 생성되었음을 의미합니다.

이제 브라우저에서 엽니다. http://127.0.0.1:8000/admin/, 계정 입력 admin, 비밀번호 입력 12345678 성공적으로 로그인하실 수 있습니다.

02.png

모델 협회 배경

이전에는 코드를 사용하여 데이터베이스를 운영했는데 이는 그리 편리하지 않습니다.

Django 백그라운드 인터페이스에서 데이터를 직접 조작할 수 있도록 애플리케이션 모델을 백그라운드에 바인딩하는 방법을 제공합니다.

이전 기사에서 작성됨 account 예시로 적용해 보세요.

존재하다 account 응용 프로그램에서 발견admin.py 파일에 다음 코드를 작성하세요.

```파이썬

계정/관리자.py

django.contrib에서 admin 가져오기 account.models에서 User 가져오기

class UserAdmin(admin.ModelAdmin): # 표시할 콘텐츠 list_display = ['username', 'email']

User 모델을 UserAdmin에 바인딩

admin.site.register(사용자, 사용자관리자) ```

여기에 먼저 소개해야합니다 admin 그리고User, 우리가 원하기 때문에 account 애플리케이션 모델은 백엔드와 연결됩니다.

라는 파일을 만듭니다. UserAdmin 수업, 거기에 적어보세요list_display = ['username', 'email'] , 배경 페이지에 표시됨을 의미username 그리고email 이 두 필드.

마침내 admin.site.register(User, UserAdmin) ~을 의미한다User 모델과 백엔드는 서로 바인딩되어 있습니다.

프로젝트를 실행하고 엽니다. http://127.0.0.1:8000/admin/ 그리고 로그인하면 방금 바인딩한 모델을 볼 수 있습니다.

03.png

데이터베이스에서 이 테이블에 대한 정보를 보려면 "사용자 테이블"을 클릭하십시오.

04.png

"추가" 버튼을 클릭하면 이 테이블에 새 데이터를 추가할 수 있습니다.

05.png

지정된 데이터를 수정하고 삭제할 수도 있습니다.

06.png

백그라운드 페이지의 수정된 데이터는 데이터베이스의 데이터에 직접적인 영향을 미칩니다.

같은 방법으로 넣어 blog 애플리케이션 모델은 백엔드와 연결됩니다. 여기서의 조작은 이전과 동일하므로 다시 설명하지 않겠습니다.

```파이썬

블로그/admin.py

django.contrib에서 admin 가져오기 blog.models에서 Article 가져오기

모델을 여기에 등록하세요.

class ArticleAdmin(admin.ModelAdmin): # 표시할 콘텐츠 list_display = ['id', 'title']

User 모델을 UserAdmin에 바인딩

admin.site.register(기사, 기사관리자) ```

07.png

기사를 작성해서 살펴보겠습니다.

"기사 정보 표" 옆에 있는 추가 버튼을 클릭하고 다음 내용을 입력하세요.

08.png

딸깍 하는 소리 SAVE 버튼을 누르면 데이터가 데이터베이스에 기록됩니다. 방금 기록된 데이터를 보려면 "기사 정보 테이블" 목록 페이지로 돌아갑니다.

09.png

전체 프로젝트의 내용이 확실하지 않다면 제가 편집한 내용을 다시 보시면 됩니다."장고 칼럼"

백엔드의 기본 구성

이전 작업에서 세심한 작업자는 인터페이스가 영어로 되어 있는 이유와 같은 몇 가지 문제를 발견했을 수 있습니다. 테이블 이름 뒤에 "s"가 있는 이유는 무엇입니까?기사를 생성할 때 선택적인 사용자 필드가 사용자 이름이 아닌 이유는 무엇입니까?User object(1)

다음에는 이러한 문제를 하나씩 해결해 보겠습니다.

시간대 및 언어 설정

프로젝트 열기 settings.py 파일, 발견됨LANGUAGE_CODE , 해당 값을 다음으로 설정합니다.'zh-hans' .그런 다음 찾아TIME_ZONE 으로 설정하다Asia/Shanghai

```파이썬

설정.py

언어

언어 코드 = 'zh-hans'

시간대

TIME_ZONE = '아시아/상하이' ```

10.png

열 이름을 중국어로 변경

하지만 이때 ACCOUNT 그리고BLOG 여기서는 아직 영어로Django 이 두 응용 프로그램에 대한 별칭을 구성해야 합니다.

11.png

구성은 각 애플리케이션마다 다릅니다. apps.py 파일을 통해verbose_name 열 이름을 사용자 정의하는 변수입니다.

~에 의해 account 예시로 적용해 보세요.

```파이썬

계정/앱.py

django.apps에서 AppConfig 가져오기

클래스 AccountConfig(AppConfig): 기본값자동차field = 'django.db.models.BigAutoField' 이름 = '계정' verbose_name = '사용자 관리' ```

blog 동일하게 적용됩니다.

```파이썬

블로그/앱.py

django.apps에서 AppConfig 가져오기

클래스 BlogConfig(AppConfig): 기본값자동차field = 'django.db.models.BigAutoField' name = 'blog' verbose_name = '기사 관리' ```

이때 페이지를 새로고침하면 컬럼명이 변경된 것을 확인할 수 있습니다.

12.png

복수형 삭제

테이블 이름 뒤의 "s"는 Django 이 "s"를 삭제하려면 테이블의 별칭도 구성해야 합니다.

각 애플리케이션의 모델 파일(models.py)에 구성됨 Meta 정보 제공verbose_name_plural

~에 의해 account 예시로 적용해 보세요.

```파이썬

계정/모델.py

django.db에서 모델 가져오기

사용자 테이블 생성

클래스 User(모델.모델): id = 모델.AutoField(기본key=True) # 사용자 이름 = models.CharField('username', maxlength=30, null=True, 공백=True, Unique=True) # 비밀번호 비밀번호 = models.CharField('password', max_length=30) # 이메일 email = models.EmailField('Email', Unique=True, null= 참, 공백=참)

  1. class Meta:
  2. # 自定义表名
  3. db_table = 'user'
  4. # 表别名
  5. verbose_name = '用户表'
  6. verbose_name_plural = '用户表'

```

페이지를 새로 고치면 "User Table" 뒤의 "s"가 사라진 것을 볼 수 있습니다.

13.png

blog 같은 이유.

외래 키 필드 표시

기사를 추가할 때 기사 테이블의 작성자를 입력하고 선택해야 합니다.

작성자를 추가하면 페이지에 "사용자 개체"라는 이름이 직접 표시됩니다. 사용자 수가 늘어나면 누가 누구인지 알 수 없습니다.

14.png

사용자 이름을 표시해야 합니다.

먼저 수정해보자 blog 표시할 필드입니다.

```파이썬

블로그/admin.py

django.contrib에서 admin 가져오기 blog.models에서 Article 가져오기

작성자 가져오기

이 obj 객체는 Article 인스턴스를 수신하는 데 사용됩니다.

def get_author(obj): obj.user.username을 반환합니다.

모델을 여기에 등록하세요.

class ArticleAdmin(admin.ModelAdmin): # 표시할 콘텐츠 # 여기에서 얻을 수 있습니다. 작성자는 사용자 이름으로 대체됩니다. 여기에는 작은따옴표나 괄호를 추가할 필요가 없습니다. # django는 리스트를 사용하고 있습니다 표시할 때 기본적으로 매개변수가 메소드에 전달됩니다. 목록디스플레이 = ['id', 가져오기작성자, '제목', '내용']

얻다작가.단편설명 = '저자'

User 모델을 UserAdmin에 바인딩

admin.site.register(기사, 기사관리자) ```

get_author 메소드와 외래 키 연결 username 필드가 표시됩니다.

15.png

이쯤 되면 이 글의 작성자가 누구인지 알 수 있을 것이다. 하지만 편집 페이지에도 사용자 이름을 표시해야 합니다.

이때 수정이 필요합니다 User 모델만 가능합니다.

```파이썬

계정/모델.py

django.db에서 모델 가져오기

사용자 테이블 생성

클래스 User(모델.모델): id = 모델.AutoField(기본key=True) # 사용자 이름 = models.CharField('username', maxlength=30, null=True, 공백=True, Unique=True) # 비밀번호 비밀번호 = models.CharField('password', max_length=30) # 이메일 email = models.EmailField('Email', Unique=True, null= 참, 공백=참)

  1. class Meta:
  2. # 自定义表名
  3. db_table = 'user'
  4. # 表别名
  5. verbose_name = '用户表'
  6. verbose_name_plural = '用户表'
  7. # 返回用户名
  8. def __str__(self):
  9. return self.username

```

존재하다 account/models.py 마지막에 추가__str__ 메서드, 반환username

이때, 사용자 이름은 기사정보 편집 페이지에서 확인할 수 있습니다.

16.png

사용자 정의 편집 가능한 점프 링크

기사 관리 페이지에서 기사를 편집하고 싶을 경우, "ID" 항목을 클릭해야만 편집 페이지로 이동할 수 있습니다.다른 필드를 클릭하여 편집 페이지로 이동하려면 수동으로 구성해야 합니다.blog/admin.py 예를 들어 "TITLE"을 클릭하여 편집 페이지로 이동하고 싶습니다.

17.png

```파이썬

블로그/admin.py

일부 코드 생략

class ArticleAdmin(admin.ModelAdmin): # 표시할 콘텐츠 목록디스플레이 = ['id', 가져오기작성자, '제목', '콘텐츠'] # 점프 가능한 필드 목록표시하다links = ['id', 'title'] # 일부 코드 생략````

나는 여기 있다 ArticleAdmin 추가됨list_display_links = ['id', 'title'], 클릭을 나타냄 id 그리고title 편집 페이지로 이동할 수 있습니다.

읽기 전용 속성

콘텐츠를 편집할 때 일부 필드를 수정하는 것을 원하지 않습니다. 예를 들어 블로그 ID는 수정할 수 없습니다.

허용되는 blog/admin.py 추가readonly_fields 수정할 수 없는 필드를 지정합니다.

```파이썬

블로그/admin.py

일부 코드 생략

class ArticleAdmin(admin.ModelAdmin): # 읽기 전용 속성 readonly_fields = ['id'] # 일부 코드 생략````

이때 편집 시 id 필드의 값은 수정할 수 없습니다.

18.png


이것이 이 기사의 전부입니다. 다음 글에서는 프론트 페이지의 데이터베이스에 정보를 로드하는 방법을 소개하겠습니다.

이미지_8982.GIF

좋아요+팔로우+수집=배움