美文网首页
Django使用步骤

Django使用步骤

作者: dd5f661aefd9 | 来源:发表于2018-11-10 09:50 被阅读5次

    一、准备阶段

    1. 查看版本
      python -m django --version
    2. 创建项目
      django-admin startproject mysite
      以上步骤在Pychram中均可省略
    3. 简单测试
      python manage.py runserver
      这里可以更改自己想要的ip及端口
      如:
      python manage.py runserver 8080
    4. 创建app
      python manage.py startapp polls
    5. 在settings中加入此app
    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'MMS',    # 后面加入的
    ]
    
    1. 在新建的app中编写第一个用于测试的views
    from django.http import HttpResponse
    def index(request):
        return HttpResponse("Hello, world. You're at the polls index.")
    
    1. 在主目录的urls.py下添加我们的views的url
    from django.contrib import admin
    from django.urls import path
    from MMS import views as MMS_views
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('',MMS_views.index),  # news
    ]
    

    二、开始加入真正的功能

    1. 在settings中更换mysql的信息
    'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'csvt',
            'USER':'root',
            'PASSWORD':'123456',
            'HOST': '127.0.0.1',
            'PORT': '3306',
        }
    
    1. 添加驱动
      django 连接mysql默认驱动是MySQLdb,MySQLdb没有支持python3的版本,解决办法如下:
    • 使用pymysql替换MySQLdb
      在django 项目配置文件同目录下的 --init__.py文件中加入以下代码:
    import pymysql
    pymysql.install_as_MySQLdb()
    
    • 使用mysqlclient代替MySQLdb
      pip install mysqlclient
    1. 默认开启的某些应用需要至少一个数据表,所以,在使用他们之前需要在数据库中创建一些表。请执行以下命令:
      python manage.py migrate
    2. 创建数据库
      在app的modles.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)
    
    1. 现在你的 Django 项目会包含 polls 应用。接着运行下面的命令:
      python manage.py makemigrations polls

    你将会看到类似于下面这样的输出:
    Migrations for 'polls':
    polls/migrations/0001_initial.py:
    - Create model Choice
    - Create model Question
    - Add field question to choice
    通过运行 makemigrations 命令,Django 会检测你对模型文件的修改(在这种情况下,你已经取得了新的),并且把修改的部分储存为一次 迁移。
    迁移是 Django 对于模型定义(也就是你的数据库结构)的变化的储存形式 - 没那么玄乎,它们其实也只是一些你磁盘上的文件。如果你想的话,你可以阅读一下你模型的迁移数据,它被储存在 polls/migrations/0001_initial.py 里。别担心,你不需要每次都阅读迁移文件,但是它们被设计成人类可读的形式,这是为了便于你手动修改它们。
    Django 有一个自动执行数据库迁移并同步管理你的数据库结构的命令 - 这个命令是 migrate,我们马上就会接触它 - 但是首先,让我们看看迁移命令会执行哪些 SQL 语句。sqlmigrate 命令接收一个迁移的名称,然后返回对应的 SQL:
    $ python manage.py sqlmigrate polls 0001

    1. 现在,再次运行 migrate 命令,在数据库里创建新定义的模型的数据表:
      python3 manage.py migrate

    以上3、4、5、6合起来如下:

    # 初始化 
    python manage.py migrate
    # 在modles中创建新的表
    # 执行一下步骤
    python manage.py makemigrations polls
    # 将表加入如数据
    python manage.py migrate
    
    1. 还要学习一下python方便的API
      现在让我们进入交互式 Python 命令行,尝试一下 Django 为你创建的各种 API。通过以下命令打开 Python 命令行:
      python manage.py shell

    我们使用这个命令而不是简单的使用 "Python" 是因为 manage.py 会设置 DJANGO_SETTINGS_MODULE 环境变量,这个变量会让 Django 根据 mysite/settings.py 文件来设置 Python 包的导入路径。

    当你成功进入命令行后,来试试 database API 吧:

    from polls.models import Choice, Question  
    # Import the model classes we just wrote.
    
    # No questions are in the system yet.
    >>> Question.objects.all()
    <QuerySet []>
    
    >>> from django.utils import timezone
    # 为表添加元素
    >>> q = Question(question_text="What's new?", pub_date=timezone.now())
    # 保存
    >>> 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)>]>
    

    等等。<Question: Question object (1)> 对于我们了解这个对象的细节没什么帮助。让我们通过编辑 Question 模型的代码(位于 polls/models.py 中)来修复这个问题。给 QuestionChoice 增加 __str__() 方法。

    polls/models.py

    class Question(models.Model):
        # ...
        def __str__(self):
            return self.question_text
    
    class Choice(models.Model):
        # ...
        def __str__(self):
            return self.choice_text
    

    给模型增加 __str__() 方法是很重要的,这不仅仅能给你在命令行里使用带来方便,Django 自动生成的 admin 里也使用这个方法来表示对象。
    **注意:这些都是常规的 Python方法。让我们添加一个自定义的方法,这只是为了演示:
    polls/models.py

    from django.db import models
    from django.utils import timezone
    
    class Question(models.Model):
        # ...
        def was_published_recently(self):
            return self.pub_date >= timezone.now() - datetime.timedelta(days=1)
    

    三、外键与主键

    相关文章

      网友评论

          本文标题:Django使用步骤

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