Django初识

Django

  • MVC - Model View Contriller
  • 强制性的使应用程序的输入,处理和输出分开
  • 核心思想:解耦
  • 优点:减低各个模块之间的耦合性,方便变更,更容易重构代码,最大程度的实现了代码的重用
  • MVT - Model View Template
  • Django 的模式应该是MVT
  • 安装命令
  • pip install django==1.11

  • B/S 浏览器服务

  • C/S 客户端服务

virtualenv

  • pip install virtualenv
  • 安装env环境
  • virtualenv –no-site-packages -p xxx 文件夹名
  • –no-site-packages 表示纯净的python环境,不加的话会导入之前装过的包
  • -p 路径 指定安装版本
  • 在安装好的文件夹中找到Scripts文件打开里面的activate进入虚拟环境
  • 退出虚拟环境deactivate

创建Django项目

  • 在虚拟环境中 在自己准备创建项目的工作目录下
  • 执行django-admin startproject 项目名
  • 其中会有一个manage.py文件,这个文件里面是整个项目的控制中心
  • 例如执行python manage.py runserver ip:端口运行项目
  • 进入项目文件,里面会自动生成以下文件
    • manage.py: 是Django用于管理本项目的管理集工具,之后站点运行,数据库自动生成,数据表的修改等都是通过该文件完成。
    • init.py: 指明该目录结构是一个python包,暂无内容,在后期会初始化一些工具会使用到。
    • settings.py: Django项目的配置文件,其中定义了本项目的引用组件,项目名,数据库,静态资源,调试模式,域名限制等
    • urls.py:项目的URL路由映射,实现客户端请求url由哪个模块进行响应。
    • wsgi.py:定义WSGI接口信息,通常本文件生成后无需改动

在settings.py中找到下面的代码,修改其中的语言和时间

LANGUAGE_CODE = 'zh-hans'  #表示显示的是中文

TIME_ZONE = 'Asia/Shanghai'  # UTC和北京时间相差8个小时,但又因为系统中没有北京时间,故写成上海时间

USE_I18N = True

USE_L10N = True

USE_TZ = True

创建app

  • python manage.py startapp appname
  • app
    • init.py:初始化
    • admin.py:管理后台注册模型
    • apps.py: settings.py 里面注册app的时候需要使用到。一般不推荐使用
    • from app.apps import AppConfig
    • App

添加app

  • 在项目的主目录下找到settings.py文件
  • 在下面这个列表添加新建的app
  • 新建的 app 如果不加到 INSTALL_APPS 中的话, django 就不能自动找到app中的模板文件(app-name/templates/下的文件)和静态文件(app-name/static/中的文件)
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'yisiyisi',
    'stu'
]

定义一个接收请求的函数

  • 在yisiyisi 下的views.py文件中
from django.http import HttpResponse
from django.shortcuts import render

# Create your views here.
#函数中一定要传参数request,表示接收的请求
def first_hello(request):
#HttpResponse是在网页上输出内容相当于print
    return HttpResponse('hello, world!')

def girl_hello(request):

    return HttpResponse('hello, 美女')

为不同app设置不同路由

  • 在主项目目录下找到urls.py
  • 这样做可以给不同app指定不同的路由,方便管理和维护
from django.conf.urls import url, include
from django.contrib import admin

from yisiyisi import views

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    #include是指在app下的urls内容
    url(r'yisiyisi/', include('yisiyisi.urls')),
    url(r'stu/', include('stu.urls'))

连接路由和对应函数

  • 为每一个函数指定一个独立的路由
  • yisiyisi app中的urls.py文件
  • 这个文件需要自己创建
# -*- coding:utf-8 -*-
from django.conf.urls import url

from yisiyisi import views

urlpatterns = [
    #前面是路由,用符合正则表达式的规则,只要在网址栏中输入符合表达式的字符串都可以匹配到
        url(r'hello/', views.first_hello),
        url(r'hellogirl/', views.girl_hello)
]

迁移数据库

  • python manage.py makemigrations
  • python manage.py migrate

配置MySQL环境

  • 修改settings.py的设置
  • 因为我用的是MySQL数据库,所以将数据库对应设置修改如下
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'HOST': 'localhost',
        'USER': 'root',
        'PASSWORD' : '******',
        'PORT': '3306',
        'NAME' : 'firsthello'
    }
}

关联数据库

  • 创建一个新的app. stu
  • 打开其中的models.py文件,并按如下代码设置初始的表
from django.db import models

# Create your models here.


class Student(models.Model):
    name = models.CharField(max_length=20)

    sex = models.BooleanField()

    class Meta: #元,模型对应数据库中的stu表
        db_table = 'stu'

定义一个添加数据的函数

  • 在stu下设置其中的views.py文件
  • 定义一个函数,在接收到请求的时候,将数据录入数据库
from django.http import HttpResponse
from django.shortcuts import render

from stu.models import Student

# Create your views here.


def second_hello(request):

    stu = Student()
    stu.name = '张三'
    stu.sex = 1

    stu.save()

    return HttpResponse('hello,china')
  • 这些设置好之后,输入迁移命令,迁移数据库

你可能感兴趣的:(Django初识)