快速建站 python_Django简单快捷建站(适合做大作业)

介绍下基础的Django开发网站,适合动手能力差的,做大作业的,没什么开发基础的人。

新建项目

安装Pycharm,在里面新建一个Django项目,什么都不用设置,然后Pycharm下方点击Terminal,这个界面在pycharm下方

在CDM界面里输入python manage.py startapp xxx 新建个application,之后要检查setting里的install app属性(一般情况下会自动设置)

是的,不用装python不用装python3不用装django什么都不用装,你就直接装个pycharm,都是自动的。

核心Workflow的讲解以及动手建立

文件系统如图(这都是上文系统自动新建的)文件系统

首先,项目名是Feng,里面是核心配置文件,用startapp命令新建的是application,是Master和Student。上面这么多文件,除了templates文件夹、forms.py文件是需要手动建立的,script.py是我自己建的完全没有用,其他文件全是系统自动建立的。

workflow:

用户输入一个网址,首先在Feng.urls.py里查找匹配,会匹配到Student.views.py里的方法,views.py里的方法可以指定一个templates文件夹里的HTML页面当做一个返回,用户就能看到HTML页面。

详细:

首先在项目上启动服务器,terminal命令python manage.py runserver

然后就能在浏览器上进入网站了,在浏览器上输入网址http://127.0.0.1:8000/login/注意要以反斜杠结尾,会在path里面根据login/这个结尾匹配到views.login,

urls里的path长这样

可以在各个application里面建自己的urls.py,不过用不着。

根据这个path,就能把login/匹配到Student.views.lgoin

views.py里长这样子

login是一个方法,返回了render系统类,三个参数依次是:第一个系统固定类,第二个是在templates文件夹里的html文件,第三个是传递的一个字典值,这里用不到。第三个值可以为空。这时候在HTML里随便写点什么hello world,就已经做好了一个静态网站了。

前后台以及数据库的交互

首先说数据库的增删改查,正常都是自动连接了sqlite3数据库,在models.py里写个类就相当于数据库里的account表

之后在pycharm下面的terminal里敲两条命令,python manage.py makemigration比较数据库与models的差别。python manage.py migrate更新数据库。就会自动在数据库里建表改表删除数据。这里会自动生成数据库操作记录。

这些文件如果想删除,那么必须要到数据库里把makemigrations表里的对应记录表也删除,不然数据库会一直报错,想在数据库里删除干净挺困难的,只有当使用SQL而且安装了可视化操作平台的时候才建议采用此操作。

之后如果要进行数据操作,增删改查数据,例如在之前提到的views.py里的login方法里,查:

按条件查询是filter,增是create,改是update,删不清楚,我没用到删的命令。

如果只需要手工改数据,那可以在admin类里注册一下,

这里注册了models.py里的几个数据类。然后在terminal里新建个管理员 python manage.py createsuperuser之后就能在网址127.0.0.1:8000/admin/里改数据了。

前后台如何交互?

通过forms.py,在后台写的form可以在前端快速调用,数据的传递都是自动的。

这是forms.py里写了个下拉菜单类,下面需要把这个类实例化。

这是views里的login方法里,红框是新建一个form(实际上这行写在哪里都可以)。之后如果想把form从后台传到前台,需要在return的时候记得把form写在第三个参数的字典里。如果想把form从前台传到后台,需要写两行 if request.method==”POST”和if form.is_valid(): 也就是篮框。

之后只需要在HTML里写上

注意action的网址要填自身。input的value是无所谓的,其他都一个字不能更改。.as_p是可改的,有as_table和as_ul,是form的显示的格式。

总结一下,就是modes.pyl里写个表,就能任意增删改查数据库,forms.py里写个表单类,然后在views.py里实例化这个类,并return给HTML,html里写上规定的代码,注意form起得名字要相同。之后就写出了表单

这里要注意,各种值经常跨文件传递,一定要大小写一致,不用担心重名,系统能校验重名的。

页面间跳转,return的 三种情况

想做从一个页面跳转到另一个页面,需要先了解return有三种情况,render, redirect, HttpResponse。 第三种是直接在浏览器上返回一个字符串。HttpResponse(“string”)

前两种需要 一些基础知识,首先,网页跳转是可以地址不变的,就是你请求的url还是那个url,但是我返回给你的html不同了,总之,就是跳转要看网址变不变,render不变,redirect变。其次,对于网页的请求分为GET和POST,GET是这样子http://127.0.0.1:8000/login/?x=1&y=2&z=3 后面的其实是传递的值,而对于POST,传递的值是在外面看不到的,form就是POST的传递方式。此时,可以发现上文说到的form在views里的逻辑是这样的:你正常打开这个网页,是对这个网页进行第一个次POST请求,render给你一个结果,如果你提交了表单,实际是POST了这个网页第二次,给你的是第二个网页,但是网址没变。所以,如果想做页面间跳转,就要用redirect

redirect就只需要一个网址当参数,而且可以只要后半段网址。如果不需要改变网址的跳转,那把render里的表单去掉,就能直接用了。

后端接受GET的值,网上有种方法是 def XXX(request, args)这么写会出很多种报错,建议写:

def XXX(request):

x = request.GET["x"]

这样从后端接受值是最简化的。

网上有些别的写法:

redirect(reverse())这里reverse其实是对字符串进行了一下简单操作,没什么用。

HttpResponseRedict跟Redirect没什么区别。

讲道理其实应该用session传递值,最安全,但是好复杂。

页面功能复杂化,Ajax

对于页面来说,有时候要设计的复杂点,几张图,几句话,一个表单里只有一个submit按钮,如果之后,还想要有很多功能很多按钮,每个按钮都跳转到不同的地方,那么可以给每个按钮绑定上不同的网址。这样子在<head>里在<body>里

这里,下面的button在onclick属性上绑定了一个F函数,里面穿进去了参数user_id,user_id是从后台的render的字典里传过来的。关键是前面,首先介绍下学习路径,ajax的基础是Jquery,再基础是javascript,再基础就是HTML和java了。这里呢$是一个标记,标记后面的都是ajax代码。之后发起了一个GET类型的访问请求,网址是balabala,关键跳转的地方不是写在url里的,是写在success里的,问我为什么?我也没学透ajax啊…

到这里呢,就能用django做一个简单的网站了,网站的前后台、页面间都能跳转,页面也可以写很多个按钮,足够实现一个稍微复杂的逻辑了。靠这个做个大作业是没毛病的。复杂逻辑都可以用这些基础功能拼出来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值