Django框架view.py,models.py,urls.py用法及调用关系的个人理解

您所在的位置:网站首页 view文件 Django框架view.py,models.py,urls.py用法及调用关系的个人理解

Django框架view.py,models.py,urls.py用法及调用关系的个人理解

2023-06-20 01:19| 来源: 网络整理| 查看: 265

一、框架最让人头疼的问题

利用框架来编写程序,会大大降低编写难度,但是如果不了解框架的调用关系及各个文件的作用,在遇到error时往往会很头疼。 以前曾经编写过Android程序,网络上对Android中各个部分的调用关系、生存期讲的很清楚,但是当我用django框架编写程序时,发现网上对这方面的东西讲的很模糊。这篇博客就讲一下我对django框架的一点个人理解。 django框架的大致结构:urls.py负责识别发送过来的request(请求),并把这些请求分派给views.py中相应的请求相应函数。而在views.py中函数的执行过程中,可能会调用到数据库的数据。这时候就会调用models.py。

二、关于models.py中的__str__

最开始接触django时,发现很多网络上的、书上的程序都会用到__str__函数,例如下面这段代码。

class Details(models.Model): """关于用户的更多信息""" heart_rate = models.FloatField(default=0) date_added = models.DateTimeField(auto_now=True) user = models.ForeignKey(User, on_delete=models.CASCADE) def __str__(self): result = [self.heart_rate, self.date_added] return str(result)

当时找了很久,没有一个地方用一句话简单概括这个函数的作用的。那么这个返回值到底有什么用呢??其实,这个代码只是用于进行网页显示的。没什么大的用处。 str作用展示1 如果我在__str__中返回一个字符串化的列表,那么就在django的管理员网站显示这样的信息。这就是__str__的作用。现在我把__str__改成下面这样,网站的显示也发生了改变。

def __str__(self): # result = [self.heart_rate, self.date_added] result = self.heart_rate return str(result)

这块代码现在只显示心率信息,显示结果如下图: str作用展示2

三、models.py中定义的类的作用

在models.py中定义一个类,就意味着在项目的"db.sqlite3"数据库中加入了一张数据表。也就是说,在models.py中定义类,就代表了创建了新的数据存储结构。

四、为什么要执着于设置默认主键id呢?

在django数据库中,所有的数据表都有默认的主键,就是“id”。最初,我一直想通过自己设置新的主键,来达到防止数据重复存储的目的,但是这里面遇到了很多奇奇怪怪的问题。所以,为什么不简单地就在存取数据的过程中加一些判断呢,通过一些简单的代码,就完全可以实现类似于主键的作用了。

五、关于views.py中的render()函数

想必有很多人看到在views.py中有类似下面的用法

return render(request, template.html, context)

最开始,我也想用这个render函数来响应来自手机APP的请求,但是会发现因为少了第二个参数而报错。那么这个函数是用来干什么的呢? render(渲染) 看到英文翻译就可以明白,这个函数是用来帮助开发者显示网页的。在这个函数的参数中,template.html就是网页的模板,context是向这个模板传输的数据。总之,render()函数将服务器的后端和前端很简单地连接了起来。 那么小伙伴会问了,如果我就是和APP,和GPRS模块传输数据,根本不需要显示网页,那该怎么办呢?用HttpResponse()函数就可以了

return HttpResponse(response_info) 六、关于views.py中自定义函数参数的问题

常见的代码是像下面这样:

def login(request): # 函数体省略 ...

不过也有的人是这样:

def login(request, username, password): # 函数体省略 ...

曾经我就有这样的疑问,这多出来的两个参数,到底是什么时候给输入进去的呢? 不过,请大家仔细想一想django的框架。能够调用views.py的地方只有一个,那就是urls.py。所以,这两个多出来的参数一定是通过urls.py输入进去的。

path('login/', views.login, name='login'),

第一种的url是像上面这样,而第二种的url则是像下面这样。

re_path(r'login/(?P\d+)&(?P\d+)', views.login, name='login'),

这里的username和password就是输入到views.py的参数,可以看出,那么两个都是数字构成的数字串。

七、服务器可以干很多事情

服务器不只能用来响应请求、存储数据,它还可以自动执行很多程序,例如爬虫、数据可视化图形的生成、数据的分析等等,只需要在编写django服务器的时候在view.py中调用相关代码即可。

八、结语

由于这些感想都是网上没有的,可能会存在一些不准确的地方,往大家指正。本文用到的服务器代码连接【oldman.zip】,对刚刚接触django框架的朋友们会有一些帮助。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3