python django实战_python+django实战

1.创建一个项目:

命令行模式先输入:django-admin startproject 项目名

2.目录层级说明

manage.py   #一个命令工具,可以随便使我们用多种方式对Django项目交互

项目名目录:

__init__.py:一个空文件,他告诉python这个目录应该被看成一个python包

settings.py:项目的配置文件 需修改的django配置文件

urls.py:项目的url声明   需修改的django配置文件

wsgi.py:项目与wsgi兼容的web服务器接口

3.配置mysql数据库

首先在__init__.py中配置

import pymysql

pymysql.install_as_MySQLdb()

在settings.py中配置

DATABASES = {

'default': {

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

'NAME': 'suck',

'USER':'root',

'PASSWORD':'123456',

'HOST':'localhost',

'PORT':'3306'

}

}

4.创建应用

命令行模式下输入:python manage.py startapp 应用名

5.app应用中目录层级说明

admin.py:站点配置

models.py:模型

views.py:视图

6.激活应用

在settings.py中,将应用添加入到INSTALLED_APPS中

INSTALLED_APPS = [

'django.contrib.admin',

'django.contrib.auth',

'django.contrib.contenttypes',

'django.contrib.sessions',

'django.contrib.messages',

'django.contrib.staticfiles',

'app'

]

7.定义模型

在models.py中定义模型

首先引入包:from django.db import models

模型类要继承models.Model类

模型类中的属性对应数据库中的字段

例如:

class Greads(models.Model):

gname=models.CharField(max_length=20)

gdate=models.DateTimeField()

ggirlnum=models.IntegerField()

gboynum=models.IntegerField()

isDelete=models.BooleanField(default=False)

class Students(models.Model):

sname=models.CharField(max_length=20)

sgender=models.BooleanField(default=True)

sage=models.IntegerField()

scontend=models.CharField(max_length=20)

isDelete=models.BooleanField(default=False)

#关联外键

sgread=models.ForeignKey('Greads', on_delete=models.CASCADE)

注意:在django2.0以上的版本添加外键时需要在后面添加on_delete=models.CASCADE

8.生成数据库中的表

a)生成迁移文件  执行命令(python manage.py makemigrations)

b)执行迁移         执行命令(python manage.py migrate)生成数据库的表

9.用python操作数据库(测试数据)

a)进入python shell中(输入命令:python manage.py shell)

b)导入包

from app.models import Greads,Students

from django.utils import timezone

from datetime import *

c)查询所用数据(输入命令:类名.objects.all())

d)添加数据(本质是创建一个模型类的对象属性)

关联对象(有外键的添加方法)

>>> g.ggirlnum=12

>>> g.save()

>>> s=Students()

>>> s.sname='zhangwei'

>>> s.sgender=False

>>> s.sage=20

>>> s.scontend='我叫小为'

>>> s.sgread=g  #将关联的外键属性直接添加到表中

>>> s.save()

获取关联对象的集合

对象名.关联对象类名_set.all()

g.students_set.all()

创建学生属于哪个班级

对象名.关联对象类名_set.create(对应字段属性=u‘属性值’)

注意:u为转码

格式:

gread1=类名()

gread1.类中属性=‘对应数据’

gread1.save()保存数据

例子:

g=Greads()

g.gname='python'

g.gdate=datetime(year=2017,month=3,day=4)

g.ggirlnum=3

g.gboynum=70

g.save()

e)查看某个对象(输入代码:Greads.objects.get(pk=对应的id))

f)修改数据(格式:模型对象.属性=新值)

g.ggirlnum=12

g.save()

g)删除数据(格式:模型对象.delete())

g.delete()

10.配置admin应用站点

概述:负责添加,修改,删除,查询

公告访问

在settings.py中的INSTALLED_APPS中添加'django.contrib.admin'

创建管理员用户:(我的账户是:用户名:admin,密码:123456789)

执行:python manage.py createsuperuser输入对应的数据

汉化:将LANGUAGE_CODE='zh-Hans'

TIME_ZONE='Asia/Shanghai'

管理数据表:

修改admin.py文件

from django.contrib import admin

# Register your models here.

from .models import Greads,Students

#注册

admin.site.register(Greads,类名)

admin.site.register(Students)

自定义管理页面

创建类

class 类名(admin.ModelAdmin):

list_display=['页面对应的字段名']  显示字段

list_filter=['过滤的字段']   过滤字段

search_fields=['搜索的字段']  搜索字段

list_per_page=分页数(4)     分页

添加页和修改页:

fields=['添加和修改对应页面的字段']  属性的先后顺序

fieldsets[一个元祖]   给属性分组

fieldsets[

("num",{"fields":['字段1','字段2'...]})

("base",{"fields":['字段1','字段2'...]})

]

注意:fields和fieldsets不能同时使用

admin.site.register(Greads,类名)

添加多个学生:

创建添加学生的类

class 类名stu(admin.TabularInline):

model=关联表的类名

extra=需要创建的多少个学生

其次在自定义管理页面中的

class 类名(admin.ModelAdmin):

inlines=[学生类名stu]

设置页面列的名称:

gender.short_description="  " gender为函数名

11.视图配置

from django.http import HttpResponse

def index(request):

return HttpResponse('xiaoluo is good man')

配置url

在主目录下的urls.py中配置

from django.contrib import admin

from django.conf.urls import url,include

urlpatterns = [

url('admin/', admin.site.urls),

url(r'^',include('app.urls'))

]

在app目录下新建一个urls.py

from django.conf.urls import url

from app import views

urlpatterns=[

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

]

配置多模板路径

在项目中新建目录,然后配置目录路径

在settings.py中的TEMPLATES中的DIRS中配置

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

在新建目录中新建一个html文件

在urls.py中配置路径

在view.py中渲染视图,将数据传递给模板,模板在渲染给页面,将渲染好的页面返回给浏览器

在页面上点击超链接显示对应班级的学生姓名

你可能感兴趣的:(python,django实战)