Python 使用Django服务Angular应用程序
我有一个DjangoREST Nginx Gunicorn构建,我使用angular作为前端 这是我第一次一起使用这个堆栈,尽管我非常熟悉Django。 根据我的习惯,我正在使用带有django模板的Python 使用Django服务Angular应用程序,python,angularjs,django,Python,Angularjs,Django,我有一个DjangoREST Nginx Gunicorn构建,我使用angular作为前端 这是我第一次一起使用这个堆栈,尽管我非常熟悉Django。 根据我的习惯,我正在使用带有django模板的render为页面提供服务 因为我使用REST和angular,所以项目构建有点不同,我想知道如何通过这个堆栈为angular应用程序提供服务 这是我的项目建设 ├── client │ ├── client-app │ └── index.html ├── gunicorn_start.s
render
为页面提供服务
因为我使用REST和angular,所以项目构建有点不同,我想知道如何通过这个堆栈为angular应用程序提供服务
这是我的项目建设
├── client
│ ├── client-app
│ └── index.html
├── gunicorn_start.sh
├── run
│ └── gunicorn.sock
└── server
├── config
├── __init__
├── manage.py
├── __pycache__
├── requirements.txt
├── static
├── urls.py
└── views.py
我想做的是为client/index.html
提供服务,让angular应用程序从此处理所有事情
这样做的正确方式是什么
编辑:
我在视图中有.py
def index(request):
return render(request, 'client/index.html')
但我有个例外
TemplateDoesnotexistat/
当进入域时,您应该将用户重定向到client/index.html,然后使用angular router,您可以使用php或django路由完成几乎所有的工作
当进入域时,您应该将用户重定向到client/index.html,然后使用angular router,您可以使用php或django routes完成几乎所有的工作
找不到模板,原因可能是未设置
模板目录
,或者您的模板不在应用程序/模板
文件夹中,其中应用程序
位于已安装的应用程序
(并且您在模板加载程序
中有django.template.loaders.app\u目录.Loader'
)
ps:如果您在视图中没有执行任何操作,即只是渲染模板
def index(request):
return render(request, 'client/index.html')
然后可以在url.py中执行此操作:
url(r'^$', TemplateView.as_view(template_name='client/index.html'))
(或者您可能拼写错了?
/应该是^$
..)找不到模板,可能是因为未设置模板目录,或者是因为您的模板不在应用程序/模板
文件夹中,应用程序
位于已安装的应用程序
(在template\u loaders
中有'django.template.loaders.app\u directories.Loader'
)
ps:如果您在视图中没有执行任何操作,即只是渲染模板
def index(request):
return render(request, 'client/index.html')
然后可以在url.py中执行此操作:
url(r'^$', TemplateView.as_view(template_name='client/index.html'))
(或者你可能拼写错了/
?应该是^$
..)看不出如何解决这个问题,我在服务器下创建了一个视图文件,创建了从URL
到视图中的视图的路由,在视图中我编写了呈现(请求,'client/index.html'))
如果您使用基于apache的服务器,则默认情况下,它会呈现您的根文件中的index.html文件。我不打算这样做,索引html是客户端文件夹的一部分,该文件夹有很多相对路由。我收到一个TemplateDoesNotExist错误../client/index.html我想如果不这样做,应该可以我不知道该如何完成,我在服务器下创建了一个视图文件,创建了从URL
到views
中视图的路由,并在我编写的视图中创建了render(请求,'client/index.html')
如果您使用基于apache的服务器,则默认情况下,它会呈现您的根文件中的index.html文件。我不打算这样做,索引html是客户端文件夹的一部分,该文件夹有很多相对路由。我收到一个TemplateDoesNotExist错误../client/index.html我想如果不这样做,应该可以现在broas你可以看到没有templates文件夹…那么我应该怎么做呢?我真的不想在client folder里面有一个template/client
文件夹我以为你说你非常熟悉Django…?如果你不想Django在你的应用程序中找到你的模板,那么在你的template\u目录中列出它的文件夹Eting。也许是一个更好的问题。为什么你想让Django参与到静态html页面的服务中?它似乎效率很低。如果我将其包含在模板目录中,我必须坚持我想要避免的客户端/模板/客户端
结构。最终我通过了这个想法,我将把angular应用程序存储在aws S3n上一点也不正确。你只能将包含模板的目录添加到template\u DIRS
,它可以在你的文件系统中的任何位置。正如你所看到的,没有模板文件夹……那么我该怎么做呢?我真的不想在客户文件夹中有一个template/client
文件夹。我以为你说你是一家人Django的骗子…?如果你不想Django在你的应用程序中找到你的模板,那么在你的template\u DIRS
设置中列出它的文件夹。也许是一个更好的问题。为什么你想让Django参与到静态html页面的服务中?这似乎效率很低。如果我把它包括在template\u DIRS
中,我必须坚持客户端/templates/client
结构,这是我想要避免的。最终我通过了这个想法,我打算将angular应用程序存储在aws S3上,这一点都不正确。你只能将包含模板的目录添加到模板目录中,它可以位于文件系统的任何位置。