我正在使用 Django 开发一个网络应用程序。
很少有像 get_token
、get_url
等函数可以从数据库获取数据并修改数据库。
我应该把这些函数放在哪里?在 views.py
或 models.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/