Django web流程

创建项目

命令django-admin startproject djangotest

进入test1目录,tree

manage.py:一个命令行工具,可以使你用多种方式对Django项目进行交互

内层的目录test1:项目的真正的Python包

_init _.py:一个空文件,它告诉Python这个目录应该被看做一个Python包

settings.py:项目的配置

urls.py:项目的URL声明

wsgi.py:项目与WSGI兼容的Web服务器入口


创建app


在一个项目中可以创建一到多个应用,每个应用进行一种业务处理

创建应用的命令:

python manage.py startapp user

定义模型类

打开models.py文件,定义模型类

引入包from django.db import models

模型类继承自models.Model类

不需要定义主键列,在生成时会自动添加,并且值为自动增长

当输出对象时,会调用对象的str方法


生成数据表

1 . 激活模型:编辑settings.py文件,将booktest应用加入到installed_apps中


2. 生成迁移文件:根据模型类生成sql语句,迁移文件被生成到应用的migrations目录

python manage.py makemigrations

3. 执行迁移:执行sql语句生成数据表

python manage.py migrate

数据库配置


1. 在虚拟环境中安装mysql包

2. 在mysql中创建数据库

3. 打开settings.py文件,修改DATABASES项

*****************1、在虚拟环境中安装mysql包*****************

pip install PyMySQL

MySQLdb 只适用于python2.x,发现python3上的pip装不上。它在py3的替代品是:pip install PyMySQL

而django默认的还是使用MySQLdb:执行会报:ImportError: No module named 'MySQLdb'

解决:

在站点的 __init__.py 文件中添加

import pymysql

pymysql.install_as_MySQLdb()

*****************2、在mysql中创建数据库表*****************

create database test2 charset=utf8

*****************3、修改DATABASES项*****************

DATABASES = {

    'default': {

        'ENGINE': 'django.db.backends.mysql',

        'NAME': 'test2',

        'USER': '用户名',

        'PASSWORD': '密码',

        'HOST': '数据库服务器ip,本地可以使用localhost',

        'PORT': '端口,默认为3306',

    }

}

测试数据

1. 激活进入python shell,进行简单的模型API练习

python manage.py shell

2. 引入需要的包:

from booktest.models import *

from datetime import *

3. 单个对象的增删改查

4. 关联对象的操作

引入需要的包:

from booktest.models import *

from datetime import *

**************单个对象的操作**************

1、查询所有图书信息:

BookInfo.objects.all()

2、新建图书信息:

b = BookInfo()

b.btitle="射雕英雄传"

b.bpub_date=datetime(year=1990,month=1,day=10)

b.save()

3、查找图书信息:

b=BookInfo.objects.get(pk=1)

输出图书信息:

b

b.id

b.btitle

4、修改图书信息:

b.btitle="天龙八部"

b.save()

5、删除图书信息:

b.delete()

**************关联对象的操作**************

1、对于HeroInfo可以按照下面的操作方式进行

添加,注意添加关联对象

h=HeroInfo()

h.htitle=u'郭靖'

h.hgender=True

h.hcontent='降龙十八掌'

h.hbook=b

h.save()

2、获得关联集合:返回当前book对象的所有hero

b=BookInfo.objects.get(pk=1)

b.heroinfo_set.all()

管理站点

运行如下命令可以开启服务器

python manage.py runserver ip:port

  使用django的管理

创建一个管理员用户

python manage.py createsuperuser,按提示输入用户名、邮箱、密码

启动服务器,通过“ip:port/admin”访问,输入上面创建的用户名、密码完成登录

 向admin注册user的模型

打开user/admin.py文件,注册模型

from django.contrib import admin

from .models import user

admin.site.register(user)


Urlconf


******************插入booktest的urls******************

在test1/urls.py插入booktest,使主urlconf连接到booktest.urls模块

url(r'^', include('booktest.urls’)),

******************添加urlconf******************

在booktest中的urls.py中添加urlconf

from django.conf.urls import url

from . import views

urlpatterns = [

    url(r'^$', views.index),

    url(r'^([0-9]+)/$', views.detail),

]

views模块


*****************render简写*****************

from django.shortcuts import render

from .models import User

def index(reqeust):

    return render(reqeust, 'login.html', {'booklist': booklist})

templates模版

 修改settings.py文件,设置TEMPLATES的DIRS值

'DIRS': [os.path.join(BASE_DIR, 'templates')],

你可能感兴趣的:(Django web流程)