读Django教程,一步一步学习!【第一章 Django初学者】

首先

我是一个编程经验只有一年的初学者。
我已经在实际工作中进行了一年的网站编码。
因为希望能够开始进行系统开发,
所以打算从现在开始学习Laravel和React。

这次的目的

我计划学习使用Django来创建应用程序的实际流程。
我会阅读官方教程。

目录

    1. 创建项目

 

    1. 创建应用程序

 

    1. 创建视图

 

    1. 配置数据库

 

    1. 创建模型

 

    1. 尝试使用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管理页面上尝试使用

最后

这次就到这里吧。

bannerAds