博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 学习笔记十五 django基础
阅读量:4986 次
发布时间:2019-06-12

本文共 5892 字,大约阅读时间需要 19 分钟。

Python的WEB框架有Django、Tornado、Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM、模型绑定、模板引擎、缓存、Session等诸多功能。

1.创建django程序

  • 通过命令行 
django-admin  startproject  mysite   创建project  一个工程可以包含多个app,app共用一个project的配置文件    cd mysite    python manage.py startapp app01      创建app01    python manage.py startapp app02      创建app02
  • 通过pycharm
创建Django程序    Win:         终端,python python manage.py startapp app01    -windows     Mac:        option+R   starapp app01

创建project

创建app

python manage.py startapp app01

2.django的程序目录

settings.py 全局配置文件(DATABASESTEMPLATE_DIRSSTATICFILES_DIRS等等)

urls.py 存放路由系统(映射)

wsgi.py  配置使用哪种是wsgi,用于创建socket

templates 存放模板文件

manage.py  Django的启动管理程序

创建app后,可以看见django是MTV框架,我们主要是操作models  templates views

         

models.py  通过orm对数据库进行操作

templates 模块存放

views.py  函数处理用户请求

3.一次简单的请求流程

1.定义url

from app01 import views #导入处理函数urlpatterns = [    url(r'^admin/', admin.site.urls),    url(r'^home/', views.home),]

2.定义views

from django.shortcuts import HttpResponse def home(request):    #处理请求的函数必须包含request,django调用函数需要用户请求的函数封装进来    return HttpResponse("ok") #将返回字符串封装

3.启动django程序

python manage.py runserver 127.0.0.1:8000

4.访问

4.django admin 前瞻

  django默认提供一个后台,admin用来配置后台;我们想对数据库操作,一般使用数据库终端连接,写sql语句执行操作;

但是admin可以快速的操作数据,django orm 可以通过类创建表,将类注册进admin中,后台即可对表进行操作。

创建超级用户:

python manage.py createsuperuser 

登录admin:       
http://localhost:8000/admin/

5.Django依赖数据库

    migrations  django的orm 可以修改表结构

    python manage.py makemirations    # 生成配置文件

    python manage.py migrate        # 根据配置文件创建数据库相关

   数据库配置文件:settings.py

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

6.路由系统

  • 静态路由
url(r'^home/', views.home),
  • 动态路由

          按照顺序,第n个匹配的数据,交给函数的第n个参数,严格按照顺序   

url(r'^news/(\d+)/',views.news),     def news(request,nid):        return HttpResponse(nid)

          模版的方法,将匹配的参数,传给指定的形式参数

url(r'^page/(?P
\d+)/(?P
\d+)', views.page), def page(request,n2,n1): nid = n1 + n2 return HttpResponse(nid)
  • 二级路由

  当请求过来,先进行一级匹配拿到url后边参数,将后边的参数进行二级匹配 最后找到处理函数

将前缀是app01开头的交给另一个路由处理对应一个文件

#project urls from django.conf.urls import url,includefrom django.contrib import adminurlpatterns = [    url(r'^admin/', admin.site.urls),    url(r'^app01/', include("app01.urls")),    url(r'^app02/', include("app02.urls")),]
#app01 创建urls from app01 import viewsurlpatterns = [    url(r'^admin/', admin.site.urls),    url(r'^home/', views.home),]
#app01 views from django.shortcuts import HttpResponse  def home(request):       return HttpResponse("app01.home")

7.数据库操作

   ORM框架

  code first       写类 --> 数据库表       db first     通过命令创建数据库,表,字段 -->根据表创建类
注册appINSTALLED_APPS = [    'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'app01' ] 1.配置models.py 创建类 class UserInfo(models.Model):#集成基类 username = models.CharField(max_length=64) pwd = models.CharField(max_length=64) 2.先生成一个配置文件 python manage.py makemigrations 3.通过文件进行数据库操作 python manage.py migrate

   默认表名:appname_classname

基本操作:

#views中导入models from app01 import modelsdef db_handle(request):    # 增加    # models.UserInfo.objects.create(username='alex', password='123', age=73)    # dic = {
"username": 'eric', "password": '123', "age": 73} # models.UserInfo.objects.create(**dic) # 删除 # models.UserInfo.objects.filter(username='alex').delete() # 修改 # models.UserInfo.objects.all().update(age=18) # 查找 # models.UserInfo.objects.all() 查找所有 # models.UserInfo.objects.filter(age=18) 匹配条件 # models.UserInfo.objects.filter(age=18).first() 匹配中选择第一个
#user_list_obj 数据库表的对象,一个对象代表数据库的一行数据,它包含该表的几个字段     user_list_obj = models.UserInfo.objects.all()     # queryset,list    #for line in user_list_obj:    #   print(line.username,line.age)    #return HttpResponse('ok')

实例:

数据库添加与展示

urls配置

from app01 import viewsurlpatterns = [    url(r'^home/', views.home),    url(r'^db_handle/', views.db_handle),]

views配置

from app01 import models def db_handle(request):    # request 用户请求的所有内容    # request.POST  用户以POST提交    # request.GET  用户以GET提交    if request.method == "POST":    # request.POST.get("username") 获取后台数据    # request.POST['password']    # request.POST['age']    # d = dict(request.POST)    # models.UserInfo.objects.create(**d)         #创建数据        models.UserInfo.objects.create(username=request.POST['username'],                                       password=request.POST['password'],                                       age=request.POST['age'])     #展示数据    user_list_obj = models.UserInfo.objects.all()    return render(request, 't1.html', {'li': user_list_obj})

模板配置

    

{% for item in li %}
{% endfor %}
用户名 密码 年龄
{
{ item.username }}
{
{ item.password }}
{
{ item.age }}
View Code

静态文件渲染html

1.创建templates同级目录static

2.在settings定义static位置

STATICFILES_DIRS = (        os.path.join(BASE_DIR, 'static'),    )
注意:
POST提交数据需要以下操作
MIDDLEWARE_CLASSES = [    'django.middleware.security.SecurityMiddleware',    'django.contrib.sessions.middleware.SessionMiddleware',    'django.middleware.common.CommonMiddleware',    # 'django.middleware.csrf.CsrfViewMiddleware',   注释    'django.contrib.auth.middleware.AuthenticationMiddleware',    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',    'django.contrib.messages.middleware.MessageMiddleware',    'django.middleware.clickjacking.XFrameOptionsMiddleware',]
 

转载于:https://www.cnblogs.com/koka24/p/5452809.html

你可能感兴趣的文章
mysql游标的应用包括函数
查看>>
RatingBar
查看>>
关于Python编码问题小记
查看>>
js ---整理
查看>>
sql nolock是什么
查看>>
领扣(LeetCode)字符串相加 个人题解
查看>>
关于nginx反向代理504 gateway time-out配置
查看>>
带有构造方法的枚举
查看>>
idea代码出现Usage of API documented as @since 1.8+ less... (Ctrl+F1)
查看>>
Quartz.NET 2.0 学习笔记(2) :和1.0的几点不同
查看>>
ext4 goes faster than ext3(From 51cto)
查看>>
初识WEB移动端开发
查看>>
关于<meta name="viewport" content="width=device-width, initial-scale=1.0">的解释
查看>>
浪味仙
查看>>
LUOGU P4777 【模板】扩展中国剩余定理(EXCRT)
查看>>
[转]expect的安装
查看>>
HDU 1070 [Milk] 贪心
查看>>
关于 IsLocalUrl 方法的注意事项
查看>>
ln -s 软连接介绍
查看>>
计算到今天多少天--字符集要选GB2312
查看>>