项目目录中的Django视图

juzqafwq  于 2023-07-01  发布在  Go
关注(0)|答案(4)|浏览(139)

我有一个项目,有两个应用程序,它们各自的视图,但我想views.py在django项目目录中创建一个www.example.com,用于一些通用页面,如关于,登录...将views.py和模板放在项目根文件夹中是否正确?

xesrikrc

xesrikrc1#

我一直在阅读这个。更推荐的做法是创建一个在其他应用程序之间创建内聚的应用程序,称之为web_site或site,无论什么对你更好。

python manage.py startapp my_site

这个网站应用程序中的一切都将以常规方式完成。在项目的url中,你会希望以这种方式导入url,这样网页就显示在/ url模式中。

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('my_site.urls'))
]
30byixjq

30byixjq2#

我这样做的项目级页面,如你所描述的。这些通常是将项目的应用程序绑定在一起的简单页面,并且不包含任何业务逻辑。

w9apscun

w9apscun3#

这个问题似乎是一个观点问题,但我的看法是:只要“通用”页面非常简单,那么在项目根目录中实现它们可能会更好。实际上,如果网页是不需要特殊上下文数据的模板,您甚至可以取消views.py,只需在根urls.py中添加以下内容:

path("", TemplateView.as_view(template_name="home.html"), name="home")

虽然@jogarcia的answer以内聚的名义主张一个单独的应用程序,但我认为有一种情况是,将这些简单的通用页面保留在“根”项目目录中实际上会使代码更具内聚性,因为它们是像settings.py这样的项目的基本和核心。这些页面倾向于以与根urls.py相同的方式链接到其他应用程序,因此它不应该增加耦合。
如果“通用”页面开始有很多复杂的功能,那么单独的应用程序选项可能会变得更有吸引力。

mcvgt66p

mcvgt66p4#

您可以通过将views.py文件添加到项目目录中来实现这一点。

from django.contrib import admin
from django.urls import path, include
from attendance import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('insert.urls')),
    path('login/', views.logins, name='login'),# relevant line
]

这是登录视图的代码

from django.shortcuts import render
from django.http import HttpResponse

# Create your views here.

def logins(request):
    return HttpResponse("THIS IS LOGIN PAGE !!!")

相关问题