ng-include带有django模板系统的角度

时间:2014-06-12 15:40:08

标签: javascript python django angularjs

我正在使用带角度的Django,

在我的角度范围内,我有:

$scope.templates = [
    { name: 'addSongTemplateAjax', url: "templates/add_song_for_ajax.html"}, 
    { name: '', url: ''}
];
$scope.template = $scope.templates[0];

在我的html文件中我有:

<div class = "add_song_submit_form" ng-include="template.url">
</div>

所以,我想从javascript角度加载模板add_song_for_ajax.html。它不起作用。 Django给我一个错误404.我知道这是逻辑因为我们试图在urls.py中找到url ...

所以我确定我必须处理我的应用程序的设置和urls.py以便对django说,是的,客户端可以加载此文件!但我不知道如何。

我的template.html我想加载

<div class="alert alert-info" style = "margin-bottom:10px!important; margin-top:10px;">The song will be added to the playlist selected <strong>//playlist_selected.fields.name//</strong></div>
<form role = "form">
    <div class="form-group">
        <label for = "artist_band">Artist / Band</label>
        <input class="form-control" id="artist_band" placeholder = "Enter artist / band">
    </div>
    <div class="form-group">
        <label for="Title">Title / Song name</label>
        <input type="text" class="form-control" id="title" placeholder="Title / Song name">
    </div>
    <div class="form-group">
        <label for = "url">Url</label>
        <input class="form-control" id="url" placeholder = "Url">
    </div>
        <button type="submit" class="btn btn-default" ng-click = "submit_add_song()">Submit</button>
</form>

有什么想法吗?

3 个答案:

答案 0 :(得分:0)

根据documentation

,您应该将您的网址用单引号括起来
$scope.templates = [
    { name: 'addSongTemplateAjax', url: "'templates/add_song_for_ajax.html'"}, 
    { name: '', url: ''}
];

答案 1 :(得分:0)

您需要在Django的网址列表中输入模板。有关示例和简要说明,请参阅How do I go straight to template, in Django's urls.py?中的更新答案。根据您在urls.py中的内容,您可能需要使用&#34; templates /&#34;超出客户端模板类中的URL。

答案 2 :(得分:0)

这些动态模板纯粹只是AngularJS还是他们还需要Django的上下文?


1。只有角度

如果这些模板不需要Django的上下文或模板标签,那么您可以将它们视为静态文件。并将它们放在STATICFILES目录中。

然后,您可以通过为这些模板提供完整网址的角度(例如{% static 'templates/add_song_for_ajax.html' %}的输出)以角度加载它们。

Angular的AJAX应该能够毫无问题地加载这些静态HTML文件。

此解决方案的缺点是,如果在Django设置中更改STATIC_URL,则还应在JS中更改它。

2。 Angular plus Django

如果您的动态模板需要Django的上下文,那么您应该将这些模板编写为Django模板,编写各自的视图并配置urls.py

然后,您可以在JS中使用已配置的网址指向那些Django网址。

别忘了Django&AngularJS&#39;冲突的模板标签。请参阅AngularJS with Django - Conflicting template tags