Django 는 어떻게 대량으로 Model 을 만 듭 니까?
테스트 데 이 터 를 모두 데이터베이스 에 입력 하 는 것 은 매우 번 거 롭 고 파트너 와 함께 개발 하고 배치 하면 그들 은 데 이 터 를 입력 하 는 번 거 로 운 과정 에 시간 을 쓰 고 싶 지 않 을 것 이다.이때 데 이 터 를 대량으로 입력 하 는 스 크 립 트(population script)를 만 드 는 것 이 필요 하 다.
2.코드:
models.py 에서 정 의 된 데 이 터 를 다음 으로 가정 합 니 다.
from django.db import models
# Create your models here.
class Category(models.Model):
name=models.CharField(max_length=128,unique=True)
class Meta:
verbose_name_plural="Categories"
def __str__(self):
return self.name
class Page(models.Model):
category=models.ForeignKey(Category,on_delete=models.CASCADE)
title=models.CharField(max_length=128)
url=models.URLField()
views=models.IntegerField(default=0)
def __str__(self):
return self.title
populate.py 는 다음 과 같 습 니 다(참고 만 제공).
import os
# In your live server environment, you'll need to tell your WSGI application what settings
# file to use. Do that with os.environ:
#reference source:https://docs.djangoproject.com/en/3.1/topics/settings/
os.environ.setdefault('DJANGO_SETTINGS_MODULE','tango_with_django_project.settings')
import django
django.setup()
from rango.models import Category,Page
#If you're using components of Django “standalone” C for example, writing a Python script
# which loads some Django templates and renders them, or uses the ORM to fetch some data C
# there's one more step you'll need in addition to configuring settings.
# After you've either set DJANGO_SETTINGS_MODULE or called configure(), you'll need to call
# django.setup() to load your settings and populate Django's application registry.
# reference source:https://docs.djangoproject.com/en/3.1/topics/settings/
def populate():
python_pages=[
{"title":"official",
"url":"http://docs.python.org"},
{"title":"How to think like a computer scientis",
"url":"http://ww.greenteapress.com/thinkpy"},
{"title":"learn python in 10 minites",
"url":"http://www.korokithakis.net/tutorials/python"}
]
django_pages=[
{"title":"Official Django tutorial",
"url":"https://docs.jangoproject.com/en/1.9/intro"},
{"title":"Django Rocks",
"url":"http://www.djangorocks.com"
},
{"title":"HOw to tango with django",
"url":"http://www.tangowithdjango.com"}
]
other_pages=[
{"title":"Bottle",
"url":"http://bottlepy.org"},
{"title":"Flask",
"url":"http://flask.pocoo.org"},
{"title":"Bold test",
"url":"http://boldtest.org"}
]
cats={"Python":{"pages":python_pages},
"Django":{"pages":django_pages},
"Other Frameworks":{"pages":other_pages}}
def add_page(cat,title,url,views=0):
p=Page.objects.get_or_create(category=cat,title=title,url=url,views=views)[0]
# p.url=url
# p.views=views
p.save()
return p
def add_cat(name):
c=Category.objects.get_or_create(name=name)[0]
c.save()
return c
for cat,cat_data in cats.items():
c=add_cat(cat)
for p in cat_data['pages']:
add_page(c,p["title"],p['url'])
for c in Category.objects.all():
for p in Page.objects.filter(category=c):
print("-{0}-{1}".format(str(c),str(p)))
if __name__=="__main__":
print("starting rango population script")
populate()
3.코드 요점(1)django 의 코드 를 독립 적 으로 실행 할 때 python manage.py runserver 를 통 해 실행 되 는 것 이 아니 라 django.setup()을 사용 하여 Django 프로젝트 의 설정 을 도입 해 야 합 니 다.설정 을 도입 하기 전에 환경 변 수 를 가 리 켜 야 합 니 다.DjangoSETTINGS_MODULE 은 이 항목 의 settings 를 사용 합 니 다.
환경 변 수 를 python 에서 자주 사용 하 는 os.environ 을 설정 합 니 다.사전 형식 을 되 돌려 줍 니 다.모든 환경 변수의 키 쌍 이 포함 되 어 있 기 때문에 사전 내 장 된 방법 setdefault 을 사용 하여 환경 변 수 를 설정 합 니 다.
'DJANGO_SETTINGS_MODULE'를'tango'로 설정with_django_procject.settings'(이 항목 의 settings.py).
참조:https://docs.djangoproject.com/en/3.1/topics/settings/#envvar-DJANGO_SETTINGS_MODULE
(2)get_or_create 방법:(공식 문서 정의https://docs.djangoproject.com/en/3.1/ref/models/querysets/#get-or-create다음 과 같다)
get_or_create(defaults=None, **kwargs)
A convenience method for looking up an object with the given kwargs (may be empty if your model has defaults for all fields),<br> creating one if necessary.
Returns a tuple of (object, created), where object is the retrieved or created object and created is a boolean specifying whether a new <br>object was created.
This is meant to prevent duplicate objects from being created when requests are made in parallel, and as a shortcut to boilerplatish code. <br>
여기 서 주의해 야 할 것 은 model instance 를 만 들 때 model 에 기본 값 이 있 는 경우 에 만 kwargs 를 입력 하지 않 을 수 있 습 니 다.그렇지 않 으 면 최소한 하나의 값(field,예 를 들 어 이 page 의 category,또는 Category 의 name)을 입력 해 야 합 니 다.그리고 이 방법 은 이 값 이 있 는 model instance 를 찾 습 니 다.없 으 면 새 것 을 만 듭 니 다.반환(object,created),여기 object 는 새로 만 든 대상 의 reference 이 며,created 는 True 입 니 다.4.보기 실행
python populate.py 실행:
그리고 admin 페이지 에 로그 인하 여 보기:
데이터 가 모두 데이터베이스 에 읽 히 는 것 을 볼 수 있다.
이상 은 Django 가 Model 을 어떻게 대량으로 만 드 는 지 에 대한 상세 한 내용 입 니 다.Django 가 Model 을 대량으로 만 드 는 지 에 대한 자 료 는 다른 관련 글 을 주목 하 십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django 라우팅 계층 URLconf 작용 및 원리 해석URL 구성(URLconf)은 Django가 지원하는 웹 사이트의 디렉토리와 같습니다.그것의 본질은 URL과 이 URL을 호출할 보기 함수 사이의 맵표입니다. 위의 예제에서는 URL의 값을 캡처하고 위치 매개 변수로...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.