业务逻辑设计
1.urls里面写url 2.html里面填url 3.views里面写逻辑 例子:def user_login(request):
if request.method == 'POST':
# 获取用户提交的用户名和密码
user_name = request.POST.get('username',None)
pass_word = request.POST.get('password',None)
# 成功返回user对象,失败None
user = authenticate(username=user_name,password=pass_word)
# 如果不是null说明验证成功
if user is not None:
# 登录
login(request,user)
return render(request,'index.html')
else:
return render(request,'login.html',{'msg':'用户名或密码错误'})
elif request.method == 'GET':
return render(request,'login.html')
1.构建def函数 形参写request、self
2.通过request得到数据,把数据进行计算
HTTP报文分三部分:请求行、首部、报文实体。请求行中有URL、方法。首部里有首部字段名、首部字段值,key value用冒号分割。正文,各种具体用的信息,如json格式的内容。
方法:get从服务器获取资源、post主动告诉服务器一些信息、put往指定资源位置上传最新内容(实际应用中,post常用来创建一个资源、put常用来修改一个资源)、delete 删除一个资源。
首部字段:Accept-Charset,表示客户端可以接受的字符集。Content-Type是指正文的格式,如json。
表单是一个包含表单元素的区域。表单元素是允许用户在表单中输入内容,比如:文本域(textarea)、下拉列表、单选框(radio-buttons)、复选框(checkboxes)等等。
而对应的html上要建立对应的form表单,并配置相应的post方法,使用相应的< input >内容。注意post要接 {% csrf_token %}。并且要加相应的if else来进行显示控制。
在必要情况下还要建forms文件夹,规定提交内容,里面写相关form.py。
3.render返回网页。render是渲染变量到模板中,render的第一个参数是request 第二个参数是模板路径 第三个参数context是要传入文件中用于渲染呈现的数据, 默认是字典格式。HttpResponse是不调用模板,直接返回数据
感触
感触最深的一点就是,所有东西都是看着简单,实际做起来却很复杂。一个富文本的功能可能就需要一上午,一个鉴权,第三方登陆也需要半天,更别说在前端上更改所花费的时间了。
Django基础知识
- Python安装,Django安装。python: 3.6.4。Django: 2.0.2
- 一般安装 Django 之后,您现在应该已经有了可用的管理工具 django-admin.py。我们可以使用 django-admin.py 来创建一个项目。
- 上面这种方法,没有用到 templates 。1.我们先创建 templates 文件夹,然后写一个带动态值的html。2.去settings里修改模板文件位置。TEMPLATE_DIRS = ( '/home/django/mysite/templates',) 3.把view里的HttpResponse改为render。
- 上面这种方法,没有用到数据库。1.Django规定,如果要使用模型,必须要创建一个app。 2.settings.py中找到INSTALLED_APPS加入app。 3.修改model文件,创建好类。执行命令
$ python manage.py migrate # 创建表结构
$ python manage.py makemigrations TestModel # 让 Django 知道我们在我们的模型有一些变更
$ python manage.py migrate TestModel # 创建表结构
4.view中写增删改查代码,urls里配置url。
Django API中,各种方法:
数据过滤 Publisher.objects.filter(name='Apress')
获取单个对象 Publisher.objects.get(name="Apress")
数据排序 Publisher.objects.order_by("name")
连锁查询 Publisher.objects.filter(country="U.S.A.").order_by("-name")
限制返回的数据 Publisher.objects.order_by('name')[0]
更新多个对象 Publisher.objects.all().update(country='USA')2
删除对象 Publisher.objects.filter(country='USA').delete()
- 表单交互。HTML表单是网站交互性的经典方式。Django怎么对用户提交的表单数据进行处理?HTTP协议以"请求-回复"的方式工作。客户发送请求时,可以在请求中附加数据。服务器通过解析请求,就可以获得客户传来的数据,并根据URL来提供特定的服务。
- 上面这种方法,没用到admin。1.去掉urls里默认是注释的admin 2.通过在admin.py里增加各种属性,可以在页面上调节显示,各项功能。
- 确实用django run命令就可以运行一个django项目了,但是如果想更稳当,需要使用Nginx+uwsgi 服务器。当然本次毕设考虑。
- 以hello为例,总结一下django的流程。
- 以8的例子,如果我要加更多的功能,那么应该再view里写更多的def视图函数。
- 动态URL。尽管内容是动态的,但是URL ( /time/ )是静态的。 在 大多数动态web应用程序,URL通常都包含有相关的参数。 举个例子,一家在线书店会为每一本书提供一个URL,如:/books/243/、/books/81196/。 那么,我们如何设计程序来处理这种后面是动态的网页? 答案是:使用通配符(wildcard URLpatterns)。正如我们之前提到过,一个URL模式就是一个正则表达式。因此,这里可以使用d+来匹配1个以上的数字。并且这时候,你view里视图函数的参数就会增多了,比如变成def hours_ahead(request, offset)(变量名是无关紧要的,重要的是它的位置,它是这个函数的第二个 参数 (在 request 的后面)。 )
开启Session。1.编辑settings。 2.确认 INSTALLED_APPS 中有 'django.contrib.sessions' (如果你是刚打开这个应用,别忘了运行manage.py syncdb ) 3.在view中使用session
.
准备工作pip安装
[toc] 1.后台admin升级为xadmin2.0,并添加xadmin插件。 使用介绍 官网 例如:富文本编辑插件。Xadmin 插件开发之富文本编辑器 ueditor、主题插件theme、美化插件suit。 https://www.jianshu.com/p/7d4d403d2977 完成数据的显示、图标,更新。xadmin+echart显示图表 目标:1.xadmin的安装和使用 2.xadmin插件ueditor、theme、suit、echart的使用。 步骤: 2.第三方登陆第三方权限 选微博、微信、百度、Github、allouth除了提供第三方登陆还提供了注册功能。 相关教程 目标:第三方登陆的使用。选微博、微信、百度、Github、allouth除了提供第三方登陆还提供了注册功能。 3.支付宝支付详细教程 教程 目标:支付宝付款的使用。 4.全局搜索haystack教程 haystack是一个搜索框架,可以给你搜索出相关的东西,具体搜索引擎都是自己设置的,whoosh还是ES自己选。 ES 目标:ES的使用。 5.图片文件上传管理 django-filer 目标:图片上传的使用。 6.swagger文档生成器swagger 目标:swagger的使用。 7.用户通知django-notifications 目标:用户通知的使用。 8.邮件发送邮件 目标:邮件发送的使用。 9.绘制models依赖,论文阶段使用link项目设计
演示 前台 1.前端页面完成 2.前端页面加入修改的部分,完成动态模板。 3.进行页面优化。 后台: 1.数据库设计 2.django里面python代码完成,完成model层,生成admin页面。 3.完成view层,同时配置好url。 系列 http://blog.mtianyan.cn/post/8b4c6c13.html http://www.cnblogs.com/derek1184405959/ https://github.com/derek-zhang123/MxOnline https://github.com/zaxlct/imooc-django https://github.com/Liweimin0512/ImitationTmall_Django项目部署
http://blog.xander-ye.com/hello-docker/ https://www.cnblogs.com/xiao987334176/p/10276143.html 通过docker部署django项目。思路是配置好dockerfile文件,把django打成tar包,放进docker容器。预计一天时间。 首先给机器安装python 3.6.0,pycharm,并且通过pip在本机中安装django。 步骤: 1. 在pycharm里创建好项目,运行调试完毕。 .- 完成docker项目配置文件设置,即新建并完成dockerfile、pip.conf、requirements.txt.完成三者即可打包,docker build成一个镜像。
- 把生成的镜像从本机推送到云端,这里使用阿里云的镜像仓库(这里对标的就是docker的dockerhub,只是那边网速不好)。然后阿里云死活连不上,于是开加速器用dockerhub传了。
- 把云端的镜像在服务器机子上下载,并启动。