Django入门_day_1

1、Django是一个开源的python Web框架

2、安装Django

pip install django == 1.9.8  #==x.x.x指定版本号

3、创建Django项目有两种方式:命令行和pycharm(略)

django-damin startproject mysite     #django-damin startproject  项目名称

"""
创建完成后文件目录如下
  |-mysite/
  |  |-mysite/
  |    |-__init__.py
  |       |-settings.py
  |       |-urls.py
  |        |-wsgi.py
  |-manage.py
"""
  • 外层的mysite/根目录仅仅是项目的一个容器。它的命名对Django无关紧要;你可以把它重新命名为任何你喜欢的名字。
  • manage.py:一个命令行工具,可以使你用多种方式对Django项目进行交互。
  • 内层的mysite/目录是你的项目的真正的Python包。它是你导入任何东西时将需要使用的Python包的名字(例如 mysite.urls)。
  • mysite/__init__.py:一个空文件,它告诉Python这个目录应该被看做一个Python包。 
  • mysite/settings.py:该Django 项目的设置/配置
  • mysite/urls.py:该Django项目的URL声明;你的Django站点的“目录”
  • mysite/wsgi.py:用于你的项目的与WSGI兼容的Web服务器入口。

4、数据库的建立:Django默认的数据库为SQLite,如果要用MySQL且使用的是python3,则需要安装mysqlclient模块

5、在settings.py文件中DATABASES的default配置链接的数据库

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.xxx',  #xxx为库类型如:mysql\oracle等,默认为SQLite
        'NAME': 'xxx',   # 连接的数据库的库名
        'USER': 'xxx', # 连接的数据库账户
        'PASSWORD': 'xxx', # 数据库密码
        'HOST': 'xxx', # 数据库的IP地址
        'PORT': 'xxx', # 数据库的端口号
    }
}

参数:

  ATOMIC_REQUESTS:默认为False,当需要将每个HTTP 请求封装在一个数据库事务中时,设置它为True

  AUTOCOMMIT:默认为True,如果你需要禁用Django 的事务管理并自己实现,设置它为False

  ENGINE:默认:''(空字符串)使用的数据库后端。内建的数据库后端有:

  • 'django.db.backends.postgresql_psycopg2'
  • 'django.db.backends.mysql'
  • 'django.db.backends.sqlite3'
  • 'django.db.backends.oracle'

  HOST:默认:''(空字符串)连接数据库时使用哪个主机。空字符串意味着采用localhost 作为主机。

如果其值以斜杠('/')开始并且你使用的是MySQL,MySQL 将通过Unix socket 连接

  NAME:默认:''(空字符串)使用的数据库名称

  CONN_MAX_AGE:默认:0,数据库连接的存活时间,以秒为单位。0 表示在每个请求结束时关闭数据库连接 —— 这是Django 的历史遗留行为,None 表示无限的持久连接。

  PASSWORD:默认:''(空字符串),连接数据库时使用的密码。

  PORT (端口):默认:''(空字符串),连接数据库时使用的端口。

  USER:默认:''(空字符串),连接数据库时使用的用户名

6、配置好并用naivcat建立数据库mysite_data后,cd到mysite目录运行命令

python manage.py migrate  #mysql数据库生成如下

7、验证Django项目是否建立成功,在外层mysite目项下,输入命令,

python manage.py runserver
"""
输出如下:
Performing system checks...

System check identified no issues (0 silenced).
June 22, 2017 - 14:49:36
Django version 1.9.8, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
"""

则表明启动成功,打开http://127.0.0.1:8000/

更改端口,默认情况下是8000端口

python manage.py runserver 8080  # 在8080端口启动服务器

如果需改变服务器的IP地址,把IP地址和端口号放到一起。 因此若要监听所有的外网IP,请使用(如果你想在另外一台电脑上展示你的工作,会非常有用):

python manage.py runserver 0.0.0.0:8000

8、在manage.py同级目录创建应用(app):两种方式命令行与pycharm

python manage.py startapp polls

"""
polls/
    __init__.py
    admin.py
    migrations/
        __init__.py
    models.py
    tests.py
    views.py

"""

9、在polls/models.py创建与数据库交互的模型

(投票应用将创建两个模型: 

  QuestionChoice

  Question对象具有一个question_text(问题)属性和一个publish_date(发布时间)属性。

   Choice有两个字段:选择的内容和选择的得票统计。 

  每个Choice与一个Question关联。)

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

class Choice(models.Model):
    question = models.ForeignKey(Question)
    choice_text = models.CharField(max_length=200)
    votes = models/IntegerField(default=0)

  1、每个模型都用一个类表示,该类继承自django.db.models.Model
  2、每个模型都有一些类变量,在模型中每个类变量都代表了数据库中的一个字段。
  3、每个字段通过Field类的一个实例表示 —— 例如字符字段CharField和日期字段DateTimeField。
  这种方法告诉Django,每个字段中保存着什么类型的数据。
  4、每个Field 实例的名字(例如question_text 或 pub_date)就是字段的名字,并且你的数据库将把  它  用作表的列名。
  5、CharField要求你给它一个max_length,否则会报错
  6、verbose_name='date published'指定一个人类可读的名字,这是可选的
  7、使用ForeignKey定义了一个关联。它告诉Django每个Choice都只关联一个Question。

10、再次编辑mysite/settings.py文件,并修改INSTALLED_APPS设置以包含字符串'polls'

# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'polls',   #添加
]

11、运行

python manage.py makemigrations polls
"""
Migrations for 'polls':
  0001_initial.py:
    - Create model Question
    - Create model Choice
    - Add field question to choice

"""

 

posted @ 2017-06-22 16:06  起航追梦人  阅读(561)  评论(0编辑  收藏  举报