Django第一期

安装Django

去https://www.djangoproject.com/download/ 下载最新版的Django,而后解压放到Anaconda\Lib\site-packages目录下,而后cmd进入此目录,输入安装命令:python

python setup.py install

安装成功后,配置系统环境变量,将Anaconda\Lib\site-packages\Django-2.0.6添加到PATH中mysql

建立项目

django-admin startproject mysite

生成的项目的结构为:web

mysite/                  # container for project
    manage.py            # command-line utility
    mysite/                # actual Python package for project
        __init__.py        # empty file, tells python that this directory considered as a python package
        settings.py        # configuration for project
        urls.py            # URL declaration for project
        wsgi.py            # An entry-point for WSGI-compatible web server to serve project

运行项目

python manage.py runserver

python manage.py runserver 0:8000  # 0.0.0.0:8000的缩写

运行项目的同时能够配置IP和port,默认开启8000端口sql

若是在运行的时候,发生utf8的编码问题,多是计算机名字为中文致使!!!数据库

建立app(我的理解成功能块)

一个Django实例包含多个INSTALLED_APPS,它们也能够在多个实例中使用。默认状况下,会包含下面这些APPSdjango

  • django.contrib.admin 管理员站点
  • django.contrib.auth 一个身份验证系统
  • django.contrib.contenttypes 一个content types的框架
  • django.contrib.sessions 一个会话框架
  • django.contrib.messages 一个消息框架
  • django.contrib.staticfiles 一个管理静态文件的框架

包含这些经常使用的APPS会提供一些便利bash

一个project包含若干个app和配置信息,其中每一个app实现某个功能,而且能够存在于多个project中session

python manage.py startapp polls

一旦建立好后,polls就会存在于manage.py同层目录,而后来看下整个项目的结构oracle

mysite/
    db.sqlite3
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        wsgi.py
    polls/
        __init__.py
        admin.py
        apps.py
        migrations/
            __init__.py
        models.py
        tests.py
        views.py

自定义的APP的目录下,有个apps.py文件,里面有个config类,须要将这个类名添加到settings.py的INSTALLED_APPS中去,最后一个就是本身添加进去的app

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
	'polls.apps.PollsConfig',
]

urls.py

urlpatterns=[

    path(<URLPattern>, <function>),

    path(<URLPattern>, include(<other_URLPattern>))
]

path(route, view, [**kwargs, name])

  • route:包含URL模式的字符串,在处理一个request时,Django从urlpatterns中的第一个模式开始遍历,直到找到一个匹配的模式
  • view:当Django找到一个匹配的模式,就会调用指定的view函数,以HttpRequest对象和任何捕捉到的值做为关键字参数
  • kwargs:以词典的形式传递的任意关键字参数
  • name:给你的URL命名,以避免与Django其它的URL发生因同名而模棱两可的状况

启动数据库

默认使用SQLite,若是要换,须要更改配置信息。

# 默认的
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

其中ENGINE要改成django.db.backends.postgresql/django.db.backends.mysql/django.db.backends.oracle

NAME是数据库名字,若是不是sqlite3还须要本身添加USER,PASSWORD,HOST等配置信息,以下图是一个mysql的配置样例:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'test',
		'USER':'root',
		'PASSWORD':'root',
		'HOST':'localhost',
		'PORT':'3306',
    }
}

每一个APPS都会使用若干个数据库,咱们须要首先建立这些数据库,使用下面的命令来建立:

python manage.py migrate

migrate命令将查看settings.py文件中全部的INSTALLED_APPS并建立他们所需的数据库和表。

建立models

借助元数据来定义数据库布局

class Question(models.Model):
	question_text = models.CharField(max_length=200)
	pub_date = models.DateTimeField('date published')

在APP/models.py里面建立类,每一个类都继承于models.Model,类变量至关于数据库的字段,因此和scrapy相似,Django提供了一个Field类,全部的字段都是Field的实例。好比CharField()将建立一个字符字段(char),DateTimeField()将建立一个datetime类型的字段

这里建立的每一个类变量,不单单将成为数据库的字段名/列名,也将在python代码中供使用

激活models

建立和修改models都须要建立migration(它存储的是你对models的改动)

python manage.py makemigrations <app_name>

这个命令会在app目录下的migrations/001_initial.py中建立model对应的migration

而后咱们须要将这个migration应用到数据库中去

python manage.py migrate

也能够经过下面的命令来获得model对应的sql代码

python manage.py sqlmigrate <app_name> 0001

建立管理员用户

python manage.py createsuperuser
相关文章
相关标签/搜索