美文网首页django_学习笔记
django 简要操作指南

django 简要操作指南

作者: Shun2018 | 来源:发表于2019-07-25 17:34 被阅读0次

    一、安装 Django

    • 通过 pip 安装正式发布版本

    $ pip install Django

    • 使用 Git 安装

    $ git clone https://github.com/django/django.git #这会在当前目录创建一个 django 目录

    $ pip install -e django/ #这会让 Django 的代码可导入,使得 django-admin 命令行工具可用。

    • 验证Django 是否能被 Python 识别
    >>> import django
    >>> print(django.get_version())
    2.2
    
    • 查看 Django 版本

    # 如果你得到的是一个“No module named django”的错误提示,则表明你还未安装。
    $ python -m django --version


    二、创建项目

    # 打开命令行,cd 到一个你想放置你代码的目录,然后运行以下命令:
    $ django-admin startproject mysite
    # 这行代码将会在当前目录下创建一个 mysite 目录。

    # startproject创建了如下内容:
    mysite/ #最外层的 mysite/ 根目录只是你项目的容器, Django 不关心它的名字,你可以将它重命名为任何你喜欢的名字。
        manage.py  #管理 Django 项目的命令行工具。
        mysite/ #里面一层的 mysite/ 目录包含你的项目,它是一个纯 Python 包。它的名字就是当你引用它内部任何东西时需要用到的 Python 包名。(比如 mysite.urls).
            __init__.py #一个空文件,告诉 Python 这个目录应该被认为是一个 Python 包。
            settings.py #Django 项目的配置文件。
            urls.py #Django 项目的 URL 声明,就像你网站的“目录”。
            wsgi.py #作为你的项目的运行在 WSGI 兼容的Web服务器上的入口。
    

    三、用于开发的简易服务器

    # 切换到最外层的 mysite 目录,执行如下命令,启动项目。
    $ python manage.py runserver #只能本机访问,默认访问地址:http://127.0.0.1:8000

    $ python manage.py runserver 0.0.0.0:8080 #任何机器都可访问,指定端口为8080

    $ python manage.py runserver 0:8080 #官网这么写的


    四、创建应用

    # 创建投票应用(在最外层 mysite 目录下创建应用)
    $ python manage.py startapp polls

    #创建的 polls 应用目录结构大致如下:
    polls/
        __init__.py
        admin.py
        apps.py
        migrations/
            __init__.py
        models.py
        tests.py
        views.py
    # 这个目录结构包括了投票应用的全部内容。
    

    五、编写视图

    # 打开 polls/views.py,把下面这些 Python 代码输入进去:
    from django.http import HttpResponse
    
    def index(request):
        return HttpResponse("Hello, world. You're at the polls index.")
    # 这是 Django 中最简单的视图。如果想看见效果,我们需要将一个 URL 映射到它。
    

    在 polls 目录里新建一个 urls.py 文件

    # 在 polls/urls.py 中,输入如下代码:
    from django.urls import path
    
    from . import views
    
    urlpatterns = [
        path('', views.index, name='index'),
    ]
    

    根 URLconf 文件中指定我们创建的 polls.urls 模块。

    # 在 mysite/urls.py 文件的 urlpatterns 列表里插入一个 include(), 如下:
    from django.contrib import admin
    from django.urls import include, path
    
    urlpatterns = [
        path('polls/', include('polls.urls')),
        path('admin/', admin.site.urls),
    ]
    # 函数 include()允许引用其它 URLconfs。每当 Django 遇到 include()时,它会截断与此项匹配的 URL 的部分,并将剩余的字符串发送到 URLconf 以供进一步处理。 include() 的设计理念是即插即用。
    

    六、数据库配置

    打开 mysite/settings.py,设置 DATABASES 变量。

    1、ENGINE -- 设定数据库引擎,可选值如下:
    • 'django.db.backends.sqlite3',
    • 'django.db.backends.postgresql',
    • 'django.db.backends.mysql',
    • 'django.db.backends.oracle'
    2、NAME -- 设定数据库名称、USER -- 填写数据库的用户名、PASSWORD -- 填写数据库的登录密码、HOST -- 填写数据主机 IP 地址、PORT -- 填写数据库的访问端口(mysql默认3306)
    3、创建表格:

    $ python manage.py migrate
    #默认开启的某些应用需要至少一个数据表,使用该命令创建对应的表格。


    七、创建模型

    编辑 polls/models.py文件:

    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)
    

    八、激活模型

    文件 mysite/settings.pyINSTALLED_APPS 子项添加点式路径:

    INSTALLED_APPS = [
        'polls.apps.PollsConfig',  # 添加的 polls 应用
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
    ]
    

    # 然后,运行下面的命令:
    $ python manage.py makemigrations polls
    # 通过运行 makemigrations 命令,Django 会检测你对模型文件的修改,并且把修改的部分储存为一次迁移。

    migrate 命令:
    • sqlmigrate 命令接收一个迁移的名称,然后返回对应的 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;
    
    改变模型需要三步:
    • 编辑 models.py 文件,改变模型;
    • 运行 python manage.py makemigrations ,为模型的改变生成迁移文件;
    • 运行 python manage.py migrate ,应用数据库迁移。

    九、初试 API

    # 进入交互式 Python 命令行,尝试 database API
    $ python manage.py shell

    >>> from polls.models import Choice, Question  # Import the model classes we just wrote.
    
    # 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.
    >>> 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 (1)>]>
    

    相关文章

      网友评论

        本文标题:django 简要操作指南

        本文链接:https://www.haomeiwen.com/subject/dxphrctx.html