我正在尝试学习django,所以当我有一个当前的解决方案时,我不确定它是否遵循django中的最佳实践.我想在我的网站上显示来自网络API的信息.假设api url如下:
http://api.example.com/books?author=edwards&year=2009
Run Code Online (Sandbox Code Playgroud)
Thsis将返回Edwards于2009年撰写的书籍清单.返回以下格式:
{'results':
[
{
'title':'Book 1',
'Author':'Edwards Man',
'Year':2009
},
{
'title':'Book 2',
'Author':'Edwards Man',
'Year':2009}
]
}
Run Code Online (Sandbox Code Playgroud)
目前我正在使用我的视图文件中的API,如下所示:
class BooksPage(generic.TemplateView):
def get(self,request):
r = requests.get('http://api.example.com/books?author=edwards&year=2009')
books = r.json()
books_list = {'books':books['results']}
return render(request,'books.html',books_list)
Run Code Online (Sandbox Code Playgroud)
通常,我们从models.py文件中的数据库中获取数据,但我不确定是否应该在models.py或views.py中获取此API数据.如果它应该在models.py中,有人可以举例说明如何做到这一点吗?我特意为stackoverflow编写了上面的例子,所以任何bug都纯粹是在这里编写它的结果.
我正在尝试使用Django Rest Framework创建一个后端,并且我正在尝试确定将业务逻辑放在何处.它会进入views.py吗?我想创建更复杂的服务,而不仅仅是获取对象列表或抓取一个特定对象.任何指导将不胜感激,谢谢.我意识到有一个关于通用Django项目中的业务逻辑的讨论,但我特别询问django rest框架.
在Django中,建议的软件架构是将所有业务逻辑和数据访问放在模型中.
但是,一些同事建议数据访问层应该与业务逻辑(业务服务层)分开.他们的理由是,如果使用不同的数据源,数据访问层可以隔离更改.他们还说,存在可以在多个模型中的业务逻辑.
但是,当我使用单独的数据访问和业务逻辑层开始编码时,数据访问层很简单(基本上是定义数据库模式的模型代码),它似乎没有增加太多价值.
从django模型中分离数据访问是否真的有价值,或者django是否已经为其ORM提供了足够的数据访问层?
我正在寻找已经实施了相当数量的django应用程序并了解他们的意见的开发人员.这适用于中小型Web应用程序.
django design-patterns business-logic-layer data-access-layer django-models
我正在从头开始开发一个计费和会计应用程序,其中我创建了两个不同的应用程序:
现在我有一个问题,我需要在以下情况下将它们联系起来:
我曾尝试在这些应用程序的模型中使用外键,但它看起来非常粗糙和糟糕。
我不确定我是否应该将所有模型放在相同的位置;我希望有见地的人对我的设计进行审查,以便我知道有哪些更好的方法可以做到这一点。