gpt4 book ai didi

python - Django 和 Angular 2 templateUrl

转载 作者:太空宇宙 更新时间:2023-11-04 05:21:16 25 4
gpt4 key购买 nike

我决定将现有的 Angular 2 应用程序集成到我的 Django REST 项目中。

  1. 为我的前端创建带有静态文件夹的 Django 应用程序:

    urls.py:

    from django.conf.urls import url
    from frontend import views
    from django.conf import settings
    from django.conf.urls.static import static


    urlpatterns = [
    url(r'^$', views.index, name='index'),
    ] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

    views.py:

    from django.shortcuts import render

    def index(request):
    """
    Renders the Angular2 SPA
    """
    return render(request, template_name='index.html')
  2. 将我的 Angular 2 应用移至前端静态文件夹

  3. 在我的设置中添加静态设置:

    STATIC_URL = '/static/'
    STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'frontend', 'static'),
    ]

    STATIC_ROOT = os.path.join(BASE_DIR, 'static')
  4. 修改 index.html:

    <html>
    <head>
    <base href="/">
    <title>PhotoHub</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    {% load staticfiles %}


    <link rel="stylesheet" href="{% static "node_modules/bootstrap/dist/css/bootstrap.min.css" %}">
    <link href="{% static "bower_components/font-awesome/css/font-awesome.min.css" %}" rel="stylesheet" />
    <link href="{% static "bower_components/alertify.js/themes/alertify.core.css" %}" rel="stylesheet" />
    <link href="{% static "bower_components/alertify.js/themes/alertify.bootstrap.css" %}" rel="stylesheet" />
    <link rel="stylesheet" href="{% static "styles.css" %}">

    <script src="{% static "bower_components/jquery/dist/jquery.min.js" %}"></script>
    <script src="{% static "node_modules/bootstrap/dist/js/bootstrap.min.js" %}"></script>
    <script src="{% static "bower_components/alertify.js/lib/alertify.min.js" %}"></script>
    <!-- 1. Load libraries -->
    <!-- Polyfill(s) for older browsers -->
    <script src="{% static "node_modules/core-js/client/shim.min.js" %}"></script>
    <script src="{% static "node_modules/zone.js/dist/zone.js" %}"></script>
    <script src="{% static "node_modules/reflect-metadata/Reflect.js" %}"></script>
    <script src="{% static "node_modules/systemjs/dist/system.src.js" %}"></script>
    <!-- 2. Configure SystemJS -->
    <script src="{% static "systemjs.config.js" %}"></script>
    <script>
    System.import('app').catch(function(err){ console.error(err); });
    </script>
    </head>
    <!-- 3. Display the application -->
    <body>
    <photohub></photohub>
    </body>
    </html>
  5. systemjs.config.js 中进行更改:

    (function (global) {
    System.config({
    //static
    defaultJSExtensions: true,
    paths: {
    // paths serve as alias
    'npm:': 'static/node_modules/'
    },
    // map tells the System loader where to look for things
    map: {
    app: 'static/dist',
    // angular bundles
    '@angular/core': 'npm:@angular/core/bundles/core.umd.js',
    '@angular/common': 'npm:@angular/common/bundles/common.umd.js',
    '@angular/compiler': 'npm:@angular/compiler/bundles/compiler.umd.js',
    '@angular/platform-browser': 'npm:@angular/platform-browser/bundles/platform-browser.umd.js',
    '@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js',
    '@angular/http': 'npm:@angular/http/bundles/http.umd.js',
    '@angular/router': 'npm:@angular/router/bundles/router.umd.js',
    '@angular/forms': 'npm:@angular/forms/bundles/forms.umd.js',
    // other libraries
    'rxjs': 'npm:rxjs',
    'angular-in-memory-web-api': 'npm:angular-in-memory-web-api',
    },
    // packages tells the System loader how to load when no filename and/or no extension
    packages: {
    app: {
    main: './main.js',
    defaultExtension: 'js'
    },
    rxjs: {
    defaultExtension: 'js'
    },
    'angular-in-memory-web-api': {
    main: './index.js',
    defaultExtension: 'js'
    }
    }
    });
    })(this);

TypeScript 文件在 /dist 中编译,模板保留在 /app 中。当我使用两个不同的服务器时,templateUrl 的路径如下所示:

templateUrl: './app/app.component.html'

现在我正尝试以这种方式声明 templateUrl,但它不起作用:

templateUrl: '{{ STATIC_URL }}' + '/app/app.component.html'

现在如何处理模板 url?

响应:

"GET /app/components/login/login.component.html HTTP/1.1" 404 2601
Not Found: /app/app.component.html

JavaScript 文件加载良好:

"GET /app/components/login/login.component.html HTTP/1.1" 404 2601
Not Found: /app/components/register/register.component.html

最佳答案

这个解决的问题:

templateUrl: 'static/app/app.component.html'

关于python - Django 和 Angular 2 templateUrl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40202622/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com