python - 我应该把这些功能放在哪里?在 models.py 内还是在views.py 内?

标签 python django django-models django-views

我正在使用 Django 开发一个网络应用程序。 很少有像 get_tokenget_url 等函数可以从数据库获取数据并修改数据库。

我应该把这些函数放在哪里?在 views.pymodels.py 内?

由于这些函数直接与数据库交互,我正在考虑将它们放入 models.py 文件中,以将这些函数用作抽象。 我想知道最佳实践。

最佳答案

  • models.py 用于定义类(每个类占用一个 数据库中的表)。
  • views.py 包含使用的任何函数 返回 django 渲染的页面。它肯定包含任何 View 函数以及在 View 内调用的其他函数。

由于您的函数 get_token() 和 get_url() 正在处理数据(而不是创建、修改或删除表),因此我建议您将它们放入views.py 文件中。

解决此问题的示例方法如下:

models.py:

class UrlTokenPair(models.Model):
      url = models.models.TextField(blank=True)
      token = models.TextField(blank=True)

views.py

from app_name.models import UrlTokenPair

def get_token(input_url):
    if UrlTokenPair.objects.filter(url=input_url):
       return UrlTokenPair.objects.get(url=input_url).token
    else:
       new_entry = UrlTokenPair.objects.create(url=input_url)
       new_entry.token = yourAlgoForToken()
       new_entry.save()
       return new_entry.token

def get_url(input_token):
    if UrlTokenPair.objects.filter(token=input_token):
       return UrlTokenPair.objects.get(url=input_token).url
    else:
       new_entry = UrlTokenPair.objects.create(token=input_token)
       new_entry.url = yourAlgoForUrl()
       new_entry.save()
       return new_entry.url

然后您可以在views.py文件中的任何 View 函数中调用上述函数get_url和get_token。您还可以在另一个 .py 文件中调用它们,只需将它们引用为:

from app_name.views import get_url, get_token

关于python - 我应该把这些功能放在哪里?在 models.py 内还是在views.py 内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34361687/

相关文章:

python - django.db.utils.OperationalError 无论我尝试什么

python - 从多个网址(使用 beautifulsoup)提取标题和表主体到数据帧

django - 具有 OneToOne 关系的模型的 DRF 序列化程序

ajax - 学习 Django + AJAX 的资源

django - Django 中的 'article_set' 来自哪里?

python - 如何在 Django 中自定义 slug 字段?

python - python if/else 中的列表理解

python - 使用标准库 Decimal 将运算符应用于非常长的十进制数时抑制科学记数法

python - 将 Sum 添加到 pandas 数据框中的所有分组行

python - 无法在 Django 1.9 中发送电子邮件