[댕고] 데이 4 - 모형.
8297 단어 프로그래밍 코드 학습
하나.설계 시스템 테이블
MVT 모델에서 모델도 데이터 저장의 형식을 가리키며 이전에 View는 보기 모듈이었다.
Django의 Model 모듈에서 데이터 클래스를 구성하여 데이터 관리
1. 데이터 모델 추가
Model 파일에 다음 코드를 입력합니다.
#
class Event(models.Model):
name = models.CharField(max_length=100) #
limit = models.IntegerField() #
status = models.BooleanField() #
address = models.CharField(max_length=200) #
start_time = models.DateTimeField('events time') #
create_time = models.DateTimeField(auto_now=True) # ( )
def __str__(self):
return self.name
#
class Guest(models.Model):
event = models.ForeignKey(Event,on_delete=models.CASCADE,default=1) # id
realname = models.CharField(max_length=64) #
phone = models.CharField(max_length=16) #
email = models.EmailField() #
sign = models.BooleanField() #
create_time = models.DateTimeField(auto_now=True) # ( )
class Meta:
unique_together = ("event", "phone")
def __str__(self):
return self.realname
데이터에 자증된 id가 있기 때문에 디자인할 때 이 필드가 필요 없고 게스트는 관련 대응이 필요합니다.
str () 방법은 파이톤이 대상을 str로 표시하는 방법을 알려 줍니다.따라서 각 모델 클래스에 추가str__() 방법입니다.
2. 데이터 마이그레이션 수행
새 데이터 클래스를 만듭니다. 블로그는 여기 제 응용 프로그램 이름입니다.
python manage.py makemigrations blog
Migrations for 'blog':
blog\migrations\0002_event_guest.py
- Create model Event
- Create model Guest
그다음에 데이터 응용.
python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, blog, contenttypes, sessions
Running migrations:
Applying blog.0002_event_guest... OK
이전 이벤트 데이터가 기본값이 없어서 데이터베이스 구축에 실패한 것을 발견했기 때문에default 값을 추가했습니다
둘.admin 백그라운드 관리
1. 가입 사용자 클래스와 활동 클래스
관리자 파일을 수정하고 생성된 데이터 클래스를 추가합니다
'''Event'''
from blog.models import Event,Guest
admin.site.register(Event)
admin.site.register(Guest)
admin 백스테이지에서도 대응하는 클래스를 볼 수 있어요.
2. 클래스에 추가 필드 표시
새 데이터를 만든 후에, 우리는 페이지에 더 많은 데이터를 보여줄 수 있어야 한다. 여기에서admin 데이터를 계속 수정한다
'''Event'''
from blog.models import Event,Guest
class EventAdmin(admin.ModelAdmin):
list_display = ('name', 'status', 'start_time','id')
class GuestAdmin(admin.ModelAdmin):
list_display = ('realname', 'phone','email','sign','create_time','event')
admin.site.register(Event,EventAdmin)
admin.site.register(Guest,GuestAdmin)
새 EventAdmin 클래스, 계승django.contrib.admin.ModelAdmin 클래스, Admin 관리 도구에 사용할 클래스의 사용자 정의 설정을 저장합니다.여기 사용자 정의 하나만:listdisplay, 목록에 표시할 필드를 정의하는 필드 이름의 그룹입니다.
3. 검색 및 필터링 기능 추가
Admin 관리 시스템은 자체적으로 검색 및 필터링 기능을 갖추고 있습니다.
class EventAdmin(admin.ModelAdmin):
list_display = ['name', 'status', 'start_time','id']
search_fields = ['name']#
list_filter = ['status']#
class GuestAdmin(admin.ModelAdmin):
list_display = ['realname', 'phone','email','sign','create_time','event']
search_fields = ['realname','phone']#
list_filter = ['sign']#
검색이 추가되었음을 보실 수 있습니다fields,list_filter 필드, 이것은 서로 다른 데이터에 따라 우리가 무엇을 근거로 필터해야 하는지를 확정합니다
셋.기본 데이터 액세스
1. Django의 셸 모드로 들어가기
Django에서 데이터베이스를 조작하려면 셸 스크립트를 켜서 데이터베이스에 대한 조작을 해야 합니다
python manage.py shell
Python 3.7.1 (v3.7.1:260ec2c36a, Oct 20 2018, 14:05:16) [MSC v.1915 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
예를 들어 Blog 응용 프로그램의 모델을 가져옵니다.py의 이벤트 테이블 및 게스트 테이블,테이블(Event, Gues 테이블)의 모든 객체를 가져옵니다.
>>> from blog.models import Event,Guest
>>> Event.objects.all()
, ]>
>>> Guest.objects.all()
]>
2.shell 데이터 삽입
>>> from datetime import datetime
>>> e1 = Event(id=2,name=' Pro ',limit=2000,status=True,address=' ',start_time=datetime(2016,8,10,14,0,0))
>>> e1.save()
C:\Python37\lib\site-packages\django-2.2.4-py3.7.egg\django\db\models\fields\__init__.py:1421: RuntimeWarning: DateTimeField Event.st
art_time received a naive datetime (2016-08-10 14:00:00) while time zone support is active.
RuntimeWarning)
>>> Event.objects.create(id=3,name=' MAX ',limit=2000,status=True,address='BJ ',start_time=datetime(2016,9,22,14,0,0))
여기에 추가된 사건은 스스로 증가한 것이다
3.shell 쿼리 데이터
>>> e2 = Event.objects.get(name=' MAX ')
>>> e2
>>> e2.address
'BJ '
>>> e3 = Event.objects.filter(name__contains=' ')
>>> e3
, , ]>
name과contains 사이에 이중 밑줄을 그으십시오.여기서 컨테이너 부분은 Django에서 LIKE 문구로 번역됩니다.
>>> g1 = Guest.objects.get(realname='Andy')
>>> g1
4.shell 데이터 삭제
질의의 데이터 삭제
>>> g2 = Guest.objects.get(realname='Mark')
>>> g2
>>> g2.delete()
(1, {'blog.Guest': 1})
이게 완전히 삭제되지 않은 것 같아요. 셸을 통해서.
5. 데이터 업데이트
데이터를 직접 업데이트하면 됩니다. 마지막으로 저장한 데이터를 기억하세요.
>>> from blog.models import Event,Guest
>>> g1 = Guest.objects.get(realname = 'Andy')
>>> g1
>>> g1.realname = 'Allen'
>>> g1
>>>g1.save()
넷.MySQL 구성
로컬 Mysql을 설치한 다음 Django를 Mysql에 연결한 다음 발표회에서 사용해야 합니다
1. Mysql 설치
이곳은 스스로 채소 새의 링크를 볼 수 있다https://www.runoob.com/mysql/mysql-install.html
다음 명령을 입력합니다.
net start mysql
root@localhost root
CREATE DATABASE guest CHARACTER SET utf8;
2. PyMySQL 설치
pip install PyMySQL
3. Django 링크 MySQL 구성
4. Django 데이터 마이그레이션
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'HOST': '127.0.0.1',
'PORT': '3306',
'NAME': 'guest',
'USER': 'root',
'PASSWORD': 'root',
'OPTIONS': {
'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",
},
}
}
python manage.py makemigrations
python manage.py migrate
옮길 때 몇 개의 구덩이를 만났다
:django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.3 or newer is required; you have 0.7.11.None
: Python Python36-32\Lib\site-packages\django\db\backends\mysql\base.py
if version < (1, 3, 3):
raise ImproperlyConfigured("mysqlclient 1.3.3 or newer is required; you have %s" % Database.__version__)
:AttributeError: 'str' object has no attribute 'decode'
: C:\Python37\lib\site-packages\django-2.2.4-py3.7.egg\django\db\backends\mysql\operations.py"
if query is not None:
query = query.decode(errors='replace') :
python manage.py createsuperuser