我正在使用Django开发一个Web应用程序。
很少有函数,如get_token
,get_url
等,可以从数据库中获取数据,也可以修改数据库。
我应该把这些功能放在哪里?在views.py
或models.py
内?
由于这些函数直接与数据库交互,我正在考虑将这些函数放在models.py
文件中以将这些函数用作抽象。
我想知道最佳做法。
答案 0 :(得分:1)
因为你的函数get_token()& get_url(),正在处理数据(而不是创建,修改或删除表),我建议你把它们放在views.py文件中。
您可以采用的示例方式如下:
<强> models.py:强>
Dim Sql As String = "SELECT Tabla1.Campo1, Tabla1.Campo2,Tabla2.Campo3"
Sql += " FROM Tabla1 LEFT JOIN Tabla2 ON Tabla1.ID = Tabla2.ID"
<强> views.py 强>
class UrlTokenPair(models.Model):
url = models.models.TextField(blank=True)
token = models.TextField(blank=True)
然后,您可以在views.py文件中的任何视图函数中调用上述函数get_url和get_token。你也可以在另一个.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