![a6cb266c3ede0140ca42ab2512bcafaf.png](https://i-blog.csdnimg.cn/blog_migrate/8389dc7f2db5b207b4bb6a5b2b833cf5.jpeg)
![f01550b93381540704dee93e5e8cb086.png](https://i-blog.csdnimg.cn/blog_migrate/a9a298641f6db080eeec7ce7855e23f0.jpeg)
![68b480f6ce6b274a019e2be1468c2b7c.png](https://i-blog.csdnimg.cn/blog_migrate/0bd60f881edb48bb2534296768885df1.jpeg)
SAST Weekly 是由电子工程系学生科协推出的科技系列推送,内容涵盖信息领域技术科普、研究前沿热点介绍、科技新闻跟进探索等多个方面,帮助同学们增长姿势,开拓眼界,每周更新,欢迎关注!欢迎愿意分享知识的同学投稿至 eesast@mail.tsinghua.edu.cn , 期待你的作品!
![46ba79b600188cdbbe1455db8f43b03b.png](https://i-blog.csdnimg.cn/blog_migrate/2d4e6360e3828c4516afb117d384d87b.jpeg)
![1634e49a4d3c579710958a68982f9574.png](https://i-blog.csdnimg.cn/blog_migrate/fa721efb3f206f9e86b054ee68a61a18.jpeg)
小时候,放学回家最大的乐趣就在于网页辣鸡游戏,我曾多次尝(huan)试(xiang)写出一个自己的网页,但是却感到很麻烦。
相较于本地的程序,网络编程是更为繁琐的,而且对初学者十分的不友好。
在网络编程时,常常会陷入下面这几个步骤:
从头开始编写网络应用程序。
从头编写另一个网络应用程序。
从第一步中总结(找出其中通用的代码),并运用在第二步中。
重构代码使得能在第 2 个程序中使用第 1 个程序中的通用代码。
重复 2-4 步骤若干次。
意识到你发明了一个框架。?
一个优秀的Web框架,可以提供通用的Web开发模型,为繁琐复杂的编程作业提供快速的解决方案。例如,Web框架可以方便地提供URL映射,整理用户提供的数据结构等等,而Django正是一款强大的网站编程框架。
Django简介
Django是用python语言编写的开源的Web框架,采用了MTV模式(模型+视图+模板)。由堪萨斯(Kansas)州 Lawrence 城中的一个 网络开发小组编写,得名于爵士乐吉他演奏家Django Reinhardt。
Django有着一流的URL设计,并可以利用模板系统分离内容和显示。
Django的下载链接:
https://www.djangoproject.com/download/
Django的官方文档:
https://docs.djangoproject.com/
工作原理图
各文件作用
配置好工作环境后,可以看到如下图所示的工作目录,它们都是做什么用的呢?
![7c694d4c6ace5be59e383bdebba3a647.png](https://i-blog.csdnimg.cn/blog_migrate/dea955f7db2715d6c46a3b758d02c92e.png)
manage.py:命令行工具,在CMD窗口下,将路径切换到django项目下输入 python manage.py help可以查看工具的具体功能。
init.py: 初始化文件。
setting.py: 项目配置文件
urls.py: 项目的URL设置,网站地址信息
wsgi.py: WebServerGatewayInterface
服务器网关接口,Python应用与Web服务器间的接口
templates: 模板文件目录
点击运行,可以看到如下提示:
![19c5bc2ccbfe57dadf632ad928c5dd4f.png](https://i-blog.csdnimg.cn/blog_migrate/dc74df27d2d240bd4dd9e23c7823fa3c.png)
复制地址到浏览器,就能看见这个项目了!(虽然什么内容也没有)
项目创建完成后,需要创建项目应用(APP),是网站的功能所在,创建过程由manage.py完成。
在命令行中输入
python3 manage.py startapp my_app
看到如下目录即为创建成功。
![f1d4e5c48c56a1a136c1fbc87aa51dfa.png](https://i-blog.csdnimg.cn/blog_migrate/4869e92eb547fe67cd1bf6321fce1a03.png)
下面我们就可以开始工作了!
Hello World!
上文说过,urls.py展示了项目的url映射,下面我们来具体举个栗子,看看它是如何使用的。
在urls.py中输入如下代码
urlpatterns = [
path('', views.hi, name='index'),
path('hello', views.hello, name='index_actor')
]
并在views.py中输入如下代码
def hi(request):
return HttpResponse("hi")
def hello(request):
return HttpResponse("Hello world !")
运行这个项目,并在浏览器中打开。
在“127.0.0.1:8000/”地址中,
可以看见网页显示hi。
在“127.0.0.1:8000/hello”中
可以看见网页显示Hello world !。
没错,到这,urls.py的作用就很清楚了,其将空字符映射给视图函数hi, 将hello字符映射给视图函数hello,并返回HttpResponse在网页上显示出文字。
HTML模板
在上个Hello World 程序中,网页是这个样子。
![42b4d908f8d0b43c604d6047db1c425c.png](https://i-blog.csdnimg.cn/blog_migrate/b12819621148e801a9e477755d2425ef.png)
是不是很丑陋,又很low,一点也没有网页应该有的样子?有什么办法来让页面漂亮起来呢?
没错,我们可以使用html+css。
下面,我们来看看如何在Django项目中使用html。
我们需要先在template文件夹中添加写好的html文件,并在views.py中添加如下代码。
#views.py
def hi(request):
return render(request, '你的html名字.html')
render是Django的模板渲染函数。
这样,点击运行,我们就能在127.0.0.1上看到你的
html文件了。(此处建议试一试)
但是,这时的html是不能改变的,这显然是非常不足的。
举个栗子。
回想一下steam的官网。
![37fcd5047c88fb6378de9988d2072368.png](https://i-blog.csdnimg.cn/blog_migrate/f81c9c1cc38a5ecc34c713f1c5490779.png)
我们进行一下翻页。
![8a9683f40dd92098c19b62097e7a33cb.png](https://i-blog.csdnimg.cn/blog_migrate/655104a72943d2261777e14fe2ad99c0.png)
观察一下,上述两个页面的ui是完全相同的,只是上面的游戏换了,难道我们要根据每个页面都写一份html代码吗,当然不用,Django为我们提供了html模板。
在html中,可以用两层大括号表示变量。
并利用上面提到的render函数对变量进行复制,这样我们就可以用一套html,css样式展现不同页面了。
举个栗子:
我们可以在html文件中写:
并在views.py中相应地写
def hi(request):
return render(request, '你的html名字.html' ,
context={'image': 你的图片链接})
就可以展示任何图片了!
除此之外html中还能写一些简单的python代码。
例如:
{% for movie in movie_list %} float:left ;margin-left: 3%;
color: red;"> {{ movie.name }}
{% endfor %}
{%%}中的就是代码,上述代码对movie_list中元素进行了遍历操作。
小结
以上就是Django的基本操作和工作原理了,除此之外Django还有很多强大的功能,至此,希望大家已经对其已经有了初步了解,又及,祝大家期中顺利!
![a2df30ff32d96c27a2edf30185631c34.png](https://i-blog.csdnimg.cn/blog_migrate/0651f97321caea9ffd2e970324d9a3f0.jpeg)
撰稿:李晨阳
审核:贺鲲鹏
![b960aee08578d8b6302d29837df3250c.png](https://i-blog.csdnimg.cn/blog_migrate/887e54fe97ccb454e72709c77f5ef460.png)