Python 使用Django服务Angular应用程序

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

我有一个DjangoREST Nginx Gunicorn构建,我使用angular作为前端

这是我第一次一起使用这个堆栈,尽管我非常熟悉Django。 根据我的习惯,我正在使用带有django模板的
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上,这一点都不正确。你只能将包含模板的目录添加到
模板目录中,它可以位于文件系统的任何位置。