读Django教程,一步一步学习!【第一章 Django初学者】
首先
我是一个编程经验只有一年的初学者。
我已经在实际工作中进行了一年的网站编码。
因为希望能够开始进行系统开发,
所以打算从现在开始学习Laravel和React。
这次的目的
我计划学习使用Django来创建应用程序的实际流程。
我会阅读官方教程。
目录
-
- 创建项目
-
- 创建应用程序
-
- 创建视图
-
- 配置数据库
-
- 创建模型
-
- 尝试使用API进行操作
- 尝试使用Django Admin
实践
创建项目
# バージョン確認
$ python3 -m django --version
# プロジェクト作成
$ django-admin startproject djangosite
# 開発サーバー起動
$ python3 manage.py runserver
# ちなみにポート番号の変更もできる
$ python3 manage.py runserver 8080
应用程序开发
# アプリ作成
$ python3 manage.py startapp polls
创建视图
# ビューファイルを編集する
from django.shortcuts import HttpResponse
# Create your views here.
def index(request):
return HttpResponse("Hello, world. You7re at the polls index.")
# Routing用のファイルを作成して編集する
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
# djangositeのRoutingを設定する
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('polls/', include('polls.urls')),
path('admin/', admin.site.urls),
]
# サーバー起動して
$ python3 manage.py runserver
# ブラウザにアクセスする
http://localhost:8000/polls/
数据库设置 (Database configuration)
# データベースの設定やタイムゾーンの設定
DATABASEの設定
TIME_ZONEの設定
# データベースのマイグレーション
$ python manage.py migrate
# データベースのバージョン確認(今回はsqlite3)
$ sqlite3 -version
# sqliteでテーブル一覧確認、スキーマ確認
$ .open db.sqlite3
$ .table
$ .schema テーブル名
进行模型构建
from django.db import models
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
# プロジェクトにアプリケーションのインストールを伝える
INSTALLED_APPS = [
'polls.apps.PollsConfig', // ☆追記
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
# pollsモデルを作成したことを伝える(マイグレーションファイル作成)
$ python3 manage.py makemigrations polls
# ちなみにマイグレーションがどんなSQLを実行しているのか
$ python3 manage.py sqlmigrate polls 0001
# マイグレーションファイルを作成
$ python3 manage.py migrate
尝试玩玩API
# DJANGO_SETTINGS_MODULEを設定したPythonの対話シェルを開く
$ python3 manage.py shell
# データベースAPIを触る
>>> from polls.models import Choice, Question
>>> Question.objects.all()
>>> from django.utils import timezone
>>> q = Question(question_text="What's new?", pub_date=timezone.now())
>>> q.save()
>>> q.id
>>> q.question_text
>>> q.pub_date
>>> q.question_text = "What's up?"
>>> q.save()
>>> Question.objects.all()
→<QuerySet [<Question: Question object (1)>]>
こうやって返ってくるが全く意味がないので
# QuestionやChoiceモデルを編集する
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
def __str__(self):
return self.question_text
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
def __str__(self):
return self.choice_text
# さらに追加する
import datetime
from django.utils import timezone
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
def __str__(self):
return self.question_text
def was_published_recently(self):
return self.pub_date >= timezone.now() - datetime.timedelta(days=1)
# 再度更新して確認していく
>>> exit()
$ python3 manage.py shell
>>> from polls.models import Choice, Question
>>> Question.objects.all()
>>> Question.objects.filter(id=1)
>>> Question.objects.filter(question_text__startswith='What')
>>> from django.utils import timezone
>>> current_year = timezone.now().year
>>> Question.objects.get(pub_date__year=current_year)
>>> Question.objects.get(id=2)
>>> Question.objects.get(pk=1)
>>> q = Question.objects.get(pk=1)
>>> q.was_published_recently()
>>> q = Question.objects.get(pk=1)
>>> q.choice_set.all()
>>> q.choice_set.create(choice_text='Not much', votes=0)
>>> q.choice_set.create(choice_text='The sky', votes=0)
>>> c = q.choice_set.create(choice_text='Just hacking again', votes=0)
>>> c.question
>>> q.choice_set.all()
>>> q.choice_set.count()
>>> Choice.objects.filter(question__pub_date__year=current_year)
>>> c = q.choice_set.filter(choice_text__startswith='Just hacking')
>>> c.delete()
尝试使用Django Admin(管理功能)
# 管理ユーザーを作成する
$ python3 manage.py createsuperuser
$ Username: admin
$ Email address: admin@example.com
$ Password: ********
# 開発サーバーを起動する
$ python manage.py runserver
# 以下のURLにアクセス
http://localhost:8000/admin/
# Pollsアプリをadmin上で編集出来るようにする
from django.contrib import admin
from .models import Question
admin.site.register(Question)
只需要在Django管理页面上尝试使用
最后
这次就到这里吧。