最近在培训包含在一些竞赛中,python结构方面的攻防需求呈现的越来越频频。
尽管python结构相关于Java、php等的广泛度还略低一点(当然现在的盛行程度现已越来越高了),可是咱们并不能够因此而忽视其的安全性。比如在一些赛事中就常用flask来命题等等,所以花时间学习python结构的开发与攻防关于web选手来说仍是一件比较重要的工作,所以编撰这篇文章,期望能够给一些想要快速入门的同学一点协助,一起也能共同进步。
如有过错的当地,还请各位师兄与同学指正。
依稀记得曾经用django + semantic ui + mongodb搭博客仍是大学一年级的时分,韶光仓促啊….
一、Django根底开发
曾经搭博客用的是1.8.2,还在机子上装着没卸,趁便拿过来用,当然新版别会修正许多bug,尽或许仍是要去学习新一些的版别,此篇权当入门篇。
1、下载装置与发动
# 下载django
pip install django==1.8.2 -i https://pypi.mirrors.ustc.edu.cn/simple/
# 创立文件夹并发动虚拟环境
virtualenv django_demo
cd django_demo
source bin/activate
# 创立寄存django文件的文件夹
mkdir learn_django
cd learn_django
# 创立项目
python django-admin.py startproject django_web
# 创立使用
python manage.py startapp django_app
# 修改django_web中的settings.py文件,将django_app参加到apps中
这样就完成了最根底的建立
运转服务看一下
2、Django结构中的MVC与MTV
MVC是众所周知的形式:model(模型)、view(视图)、controller(控制器)
用户在页面输入url,转交给url控制器,然后依据url匹配相应的视图函数,viwe会去到models取数据,然后models在数据库中获得数据后回来给视图,视图把要展现的数据回来给模版,然后就输出到页面上。
Django也是一个MVC结构,可是在Django中,控制器承受用户输入的部分由结构自行处理,所以django愈加重视的是 模型(model)、view(视图)、templates(模版),也便是MTV模型。
恳求一个url后,匹配相应的view区,view去models(一个保管数据的层级)查找咱们要的数据,然后将数据装载到templates层,然后呈献给咱们。
两者很像,能够说MTV依据MVC。
3、静态Web开发
创立模版层
当然,要是只想让简略的数据显现在Web页面中,不需求创立模版,直接在views函数中相应回去就能够了,可是仍是正规化一点。
在learn_django中创立templates文件夹(假如是IDE创立的django项目会主动创立),这便是咱们的模版文件夹,来增加一个可视化的模版index.html
html>
head>
title>Django Learningtitle>
head>
body>
h1>Hellow,Django!h1>>
body>
html>
创立视图层
视图层一般来说是一个视图函数,与url进行匹配回来传入对应的Web页面
from django.shortcuts import render
# Create your views here.
def index(request):
return render(request,'index.html')
创立url层
创立url层,依据传入的url来找到咱们的视图函数,从而将烘托的模版回来
from django.conf.urls import include, url
from django.contrib import admin
from django_app.views import index
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
# 用正则去对url进行匹配,然后将视图函数匹配给相应的url
url(r'^index/',index),
运转服务,默许在8000端口
python manage.py runserver
到这一步有一部分同学会有一些小问题,那便是并不能回来模版,或许Windows和linux状况各不相同,linux需求把templates目录放在app目录下才能够找到。
原因就在于settings.py中模版途径设置问题,假如templates目录是放在项目根目录,在settings中将templates途径参加就能够了。
4、动态web开发
前边是说静态页面,假如需求完成动态,那就不得不说与数据库存储的交互问题,需求对models进行对应的编写来获得数据。
mysql + django
装置对应的数据库接口驱动,这儿大致有三种:mysqldb、pymysql、mysqlclient。
[1] [2] [3] [4] [5] [6] 黑客接单网