03.27django Web 开发的框架

.Python下有许多款不同的 Web 框架。Django是重量级选手中最有代表性的一位。许多成功的网站和APP都基于Django。轻量级可以用flask。



Django采用了MVC的软件设计模式,即模型M,视图V和控制器C。


原来没有控制层,页面需要写python,所以出了mvc。但是增加了代码量,代码清晰了。


python是mvt。   models写实体类,例如学生类 ,创建十个数据库学生表       views写定义方法,验证         templates写静态页面,js


思路:例如注册,前端提交数据(TEMPLATES),python定义方法进行验证是否注册,定义sql语句,提交数据库保存(views---控制层,里面业务逻辑很多,思路清晰),成功后,可能跳转别的页面,urls是定义路径,贯穿起来。


MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。


pip list查找所装的所有软件


  • __init__.py:一个空文件,告诉 Python 这个目录应该被认为是一个 Python 包。
  • settings.py:Django 项目的配置文件。中间件,APP,数据库,根路径,静态文件,指定启动wsgi。
  • urls.py:Django 项目的 URL 声明,就像你网站的“目录”,路径跳转。
  • wsgi.py:作为你的项目的运行在 WSGI 兼容的Web服务器上的入口。


settings:

import  os
ROOT_URLCONF = 'blog1.urls'   #根路径
app也需要创建urls
TEMPLATES  模板
 
  
一个项目(总的),可以做多个APP(分支),多个模块。
 
 

DEBUG设置为False时的状态:

urls  django2.0用path,1.8用url,里面是正则表达式

1.8:

urlpatterns = [
    url('^admin/d{1,3}$', admin.site.urls),
]
2.0:
urlpatterns = [
    path('admin/<int:id>', admin.site.urls),
]



编辑博客:http://write.blog.csdn.net/postedit/79732375     协议/域名/项目名称/参数

查看博客:https://blog.csdn.net/GAOSHIQI5322688/article/details/79732375      协议/域名/项目名称/目录/目录/参数

https://传输协议,是加密的,比较安全

http://超文本传输协议

www.baidu.com:80 域名/主机名/ip地址:端口                   网站默认端口号80  省略

剩下的URI统一资源标识符


python.exe   sdk  标准开发工具箱   java 叫 jdk

pycharm  ide集成开发环境


映射:创建url,后台跳转前台


path('regist',views.regist)#请求路径,调用函数响应

from django.urls import path,include#根路径下导入include,
 
 
path('polls/', include('polls.urls')),#只能引用polls下的urls

 
 
 后台数据显示到前台步骤:页面先找根路径下的APP路径,APP路径再找后台 
 

1.后台

from django.shortcuts import render
from django.http import HttpResponse  #导入响应模块
# Create your views here.
def index(resquest):#请求只能响应一次
    #return HttpResponse('hello  world!')  #没说跳转哪个页面,相当于document.write
    return render(resquest,'ok.html')#跳转页面,需要在templates建立html
2.APP路径
 
 
from django.urls import path
from . import views
urlpatterns = [
    path('', views.HttpResponse),  #请求路径,调用函数响应

]
3.根目录经下制定我们创建的polls.urls

from django.contrib import admin
from django.urls import path,include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('mysite/',include('polls.urls')#只能引用polls下的urls
]



页面带参数,带到后台


ME2/Sites/dirmod.asp?sid=&type=gen&mod=Core+Pages&gid=A6CD4967199A42D9B65B1B    ---------get提交,地址栏,超链接方式提交

/newsarchive/<year>/<month>/  -------------改成这样,方便  rest风格,get提交

步骤:需要改的地方

1.def index(resquest,id):#请求只能响应一次
	print(id)
    #return HttpResponse('hello  world!')  #没说跳转哪个页面,相当于document.write
    	return render(resquest,'ok.html')#跳转页面,需要在templates建立html
2.
urlpatterns = [
    path('<int:id>', views.HttpResponse),  #请求路径,调用函数响应

]
3,添加参数
http://127.0.0.1:8000/polls/1
4.刷新
 
 
 
 


地址栏访问是get请求

forbidden 是缺少token      ,因为网页代码不安全,表单都能看到,所以加

POST方式步骤:

1.制作表单

<form action="" method="post">
    {% csrf_token %}#安全
    用户名:<input type="text" name="username"><br>
    密码:<input type="password" name="pwd"><br>
    <input type="submit" value="注册">
</form>
2.后台
#先是地址栏get请求,返回注册或登录页面,输完信息,注册是post请求,所以在执行下面
def login(request):
    if request.method=='GET':
        return render(request,'regist.html')
    else:
        uname=request.POST.get('username')
        pwd=request.POST.get('pwd')
       	print(uname)
	print(pwd)
	return render(request,'suc.html')
3.路径

path('regist',views.regist)

4.地址栏搜索      blog/regist


快捷键:Ctrl+F    当前页面查找相同内容


连接数据库:

1.settings 配置

设置数据库

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME':'myschool',
        'USER':'root',
        'PASSWORD':'5322688',
        'HOST':'127.0.0.1',
    }
}
 
 

2.medel.py 写类

django里面使用了ORM(object  relation mapping)对象关系映射模型,将页面数据和数据库表一一对应

class BlogUser(models.Model):#继承model.Model    save、update
    userName=models.CharField(max_length=20,null=False,unique=True)
    pwd=models.CharField(max_length=20,null=False)
    class Meta:#创建内部类,不需要前缀
        db_table='bloguser'

3.将实体类生成到数据库表

tools-->run...
makemigration blog #在控制台生成0001,知道了内容,数据库里还没有表
migrat blog 0001  #从控制台到数据库迁移,数据库有表  或者sqlmigrate blog 0001


4.views
 
 
from .models import *       #导入当前models模块里的所有
 
 
def regist(request):
    if request.method=='GET':
        return render(request,'regist.html')
    else:
        uname=request.POST.get('username')
        pwd=request.POST.get('pwd')
        bloguser=BlogUser()     #创建类对象
        bloguser.userName=uname  #将uname赋值给对象属性
        bloguser.pwd=pwd
bloguser.save() #保存数据库,不用写sql语句      return render(request,'suc.html')

5.执行




猜你喜欢

转载自blog.csdn.net/gaoshiqi5322688/article/details/79732375