- 仮想環境の作成
インストールvirtualenvのを:pip install virtualenv
問題が発生することがあります。
ImportError: cannot import name 'main'
python提示AttributeError:
'NoneType' object has no attribute 'append'
解决方法: pip install https://github.com/pyinstaller/pyinstaller/tarball/develop
- 仮想環境下でプロジェクトディレクトリを作成します。
virtualenv image
- アクティベーション
スクリプトに新しい-ENVディレクトリをフォルダに、ディレクトリの下の窓は、ファイルが、実行するかを見ることができますactivate
activate
-
プロジェクトを作成します。
django-admin startproject dj01
問題が発生した場合は- > こちら
结构如下-》
dj01/ --项目根目录是一个容器
manage.py 一个命令行实用程序,可以让你与这个Django项目以不同的方式进行交互
dj01/ 实际Python包为您的项目
__init__.py 一个空文件,告诉Python这个目录应该考虑一个Python包
settings.py Django projec配置
urls.py Django projec URL声明
wsgi.py WSGI-compatible web服务器的一个入口点为您的项目
次のコマンド(デフォルトポート8000)を実行します。
python manage.py runserver
或 python manage.py runserver 8080
結果:
-
アプリの投票ではない名前を作成します。
python manage.py startapp polls
次のようにプロジェクトが構成されています。
-
コンフィギュレーションデータベースの
情報の次のフィールドに置き換えDJ01 / settings.py:
default
データベース接続の設定が一致するプロジェクト
ENGINE
[「django.db.backends.sqlite3」、「django.db.backends.postgresql」することができ 、「django.db.backends.mysql」、または「django.db.backends.oracle 「] 1。または(これはデータドライバのJavaに似ている)他
NAME
(sqlite3ののos.path.joinを使用して(BASE_DIR、データベース名」db.sqlite3「) 、)
USER
データベースユーザ名
PASSWORD
データベースのパスワード
HOST
データベースのホストアドレス -
INSTALLED_APPS
INSTALLED_APPSには、ファイルの一番下に設定します。これは、現在のすべてのDjango Djangoアプリケーションのインスタンスが起動され保存されます。各アプリケーションは、複数のプロジェクトで使用することができ、あなたは自分のプロジェクトで使用するために他の人にそれをパッケージ化して配布することができます。
django.contrib.auth -認証システム。
django.contrib.contenttypes -コンテンツタイプフレームワーク。
django.contrib.sessions -セッションフレームワーク。
django.contrib.sites -サイト管理フレームワーク。
django.contrib.messages -メッセージフレーム。
django.contrib.staticfiles -静的なファイル管理フレームワーク。
python manage.py migrate
该命令参照settings.py 文件 `INSTALLED_APPS` 所配置的数据库中创建必要的数据库表。每创建一个数据库表你都会看到一条消息,接着你会看到一个提示询问你是否想要在身份验证系统内创建个超级用户。
- モデルの作成
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):
# ForeignKey
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
- 世論調査はDJ01 / settings.py / INSTALLED_APPSに追加されました
次のコマンドを実行します。モデルの変更は、すでにDjangoはあなたが既存のビューを更新したい知っているように、Djangoに語りました。
python manage.py makemigrations polls
結果 -
Migrations for 'polls':
polls/migrations/0001_initial.py:
- Create model Choice
- Create model Question
- Add field question to choice
その後、我々は、生成されたデータベーステーブル、および詳細なSQL文が表示されます、次のコマンドを実行します。
python manage.py sqlmigrate polls 0001
BEGIN;
--
-- Create model Choice
--
CREATE TABLE "polls_choice" (
"id" serial NOT NULL PRIMARY KEY,
"choice_text" varchar(200) NOT NULL,
"votes" integer NOT NULL
);
--
-- Create model Question
--
CREATE TABLE "polls_question" (
"id" serial NOT NULL PRIMARY KEY,
"question_text" varchar(200) NOT NULL,
"pub_date" timestamp with time zone NOT NULL
);
--
-- Add field question to choice
--
ALTER TABLE "polls_choice" ADD COLUMN "question_id" integer NOT NULL;
ALTER TABLE "polls_choice" ALTER COLUMN "question_id" DROP DEFAULT;
CREATE INDEX "polls_choice_7aa0f6ee" ON "polls_choice" ("question_id");
ALTER TABLE "polls_choice"
ADD CONSTRAINT "polls_choice_question_id_246c99a640fbbd72_fk_polls_question_id"
FOREIGN KEY ("question_id")
REFERENCES "polls_question" ("id")
DEFERRABLE INITIALLY DEFERRED;
COMMIT;
テーブルのためのデータモデルを作成するには、次のコマンドを実行します。
python manage.py migrate
-
シェルAPI
、同じディレクトリmanage.pyで実行されるpython manage.py shell
シェル・コマンド・インタフェースには、
モデル操作であってもよいです。# Import the model classes we just wrote. >>> from polls.models import Question, Choice # No questions are in the system yet. >>> Question.objects.all() <QuerySet []> # Create a new Question. # Support for time zones is enabled in the default settings file, so # Django expects a datetime with tzinfo for pub_date. Use timezone.now() # instead of datetime.datetime.now() and it will do the right thing. >>> from django.utils import timezone >>> q = Question(question_text="What's new?", >>>pub_date=timezone.now()) # Save the object into the database. You have to call save() explicitly. >>> q.save() # Now it has an ID. Note that this might say "1L" instead of "1", depending # on which database you're using. That's no biggie; it just means your # database backend prefers to return integers as Python long integer # objects. >>> q.id 1 # Access model field values via Python attributes. >>> q.question_text "What's new?" >>> q.pub_date datetime.datetime(2012, 2, 26, 13, 0, 0, 775217, tzinfo=<UTC>) # Change values by changing the attributes, then calling save(). >>> q.question_text = "What's up?" >>> q.save() # objects.all() displays all the questions in the database. >>> Question.objects.all() <QuerySet [<Question: Question object>]>
-
Djangoの管理
スーパー管理者を作成します。
-
执行第一个命令,根据提示完成超级管理员的创建
python manage.py createsuperuser
执行以下命令,启动项目
python manage.py runserver
然后在在浏览器访问127.0.0.1:8000(根据自己设置的ip和端口访问),将出现以下页面
以下のページにアクセスするためのユーザー名とパスワードを作成するための手順を入力します。
ページを入力する最初の時間は、世論調査のラベルを存在しないために、admin.pyはPOLLSタブバーを表示するには、ページをリフレッシュするために、次のコードを追加します。
admin.site.register(Poll)