Django 3.0 вторичное приложение - не найдено: stati c files - PullRequest
1 голос
/ 31 марта 2020

Ситуация

  • У меня есть приложение django 3.0, я уже создал несколько приложений, которые работают.
  • Что я пытался создать приложение аутентификации для регистрации, входа в систему.
  • Бэкэнд для регистрации и входа в систему работает.
  • Но файлы stati c, такие как. js,. css, изображения не отображаются.
  • У меня также есть базовый файл. html, содержащий все таблицы стилей import и javascript import, которые распространяются на эту регистрацию. html
  • каким-либо образом, если я заполню файл регистрации. html, ничего не оставив, кроме как просто добавив расширения из базы. html file it still выдает мне те же ошибки

Структура папки

  • mainapp-project
    • mainapp (здесь я держу базу. html файл, который распространяется на)
    • secondapp (база. html файл расширяется здесь)

settings.py

#actual folder name where we save our images
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'mainprojectfolder/static/')]

# Removed based on: https://stackoverflow.com/questions/60354519/django-base-html-extended-to-homepage-html-static-images-appear-but-home-css-d
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

#this_is_what_U_see_in_URL_bar_for_static_files
STATIC_URL = '/static/'

база. html

<!doctype html>
<html lang="en">
{% load static %}

<!-- SYLES & BASICS-->
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  <link rel="shortcut icon" type="image/png" href="{% static 'favicon.ico' %}"/>
  <title>  </title>
  <link rel="canonical" href="https://getbootstrap.com/docs/4.3/examples/carousel/">
  <link rel="stylesheet" href="static/css/bootstrap/bootstrap.min.css"> <!--  -->
  <link href="static/css/style.min.css" rel="stylesheet">
</head>

<body>
<header>
...
</header>

{% block content %}
{% endblock %}


  <script src="static/public/js/jquery/jquery.min.js"></script>
  <script src="static/public/js/popper/popper.min.js"></script>
  <script src="static/public/js/bootstrap/bootstrap.min.js"></script>

</body>
</html>

вход. html

{% extends 'ch/templates/base_emp.html' %}
{% load static %}

{% block content %}

<!-- MY COTENT, no imports only file requests-->

{% endblock %}

Сообщение об ошибке

[31/Mar/2020 12:31:22] "GET /accounts/signup HTTP/1.1" 200 19987
Not Found: /accounts/static/public/js/jquery/jquery.min.js
[31/Mar/2020 12:31:22] "GET /accounts/static/public/js/jquery/jquery.min.js HTTP/1.1" 404 3285
Not Found: /accounts/static/css/style.min.css
[31/Mar/2020 12:31:22] "GET /accounts/static/css/style.min.css HTTP/1.1" 404 3246
Not Found: /accounts/static/public/js/popper/popper.min.js
[31/Mar/2020 12:31:22] "GET /assets/images/logo-icon.png HTTP/1.1" 404 2808
Not Found: /accounts/static/css/bootstrap/bootstrap.min.css
[31/Mar/2020 12:31:22] "GET /accounts/static/public/js/popper/popper.min.js HTTP/1.1" 404 3285
Not Found: /accounts/static/public/js/bootstrap/bootstrap.min.js
[31/Mar/2020 12:31:22] "GET /accounts/static/css/bootstrap/bootstrap.min.css HTTP/1.1" 404 3288
[31/Mar/2020 12:31:22] "GET /accounts/static/public/js/bootstrap/bootstrap.min.js HTTP/1.1" 404 3303
Not Found: /accounts/static/public/js/popper/popper.min.js
[31/Mar/2020 12:31:22] "GET /accounts/static/public/js/popper/popper.min.js HTTP/1.1" 404 3285
Not Found: /accounts/static/public/js/bootstrap/bootstrap.min.js
[31/Mar/2020 12:31:22] "GET /accounts/static/public/js/bootstrap/bootstrap.min.js HTTP/1.1" 404 3303
Not Found: /accounts/static/public/js/jquery/jquery.min.js
[31/Mar/2020 12:31:22] "GET /accounts/static/public/js/jquery/jquery.min.js HTTP/1.1" 404 3285
Not Found: /accounts/static/public/js/popper/popper.min.js
[31/Mar/2020 12:31:22] "GET /accounts/static/public/js/popper/popper.min.js HTTP/1.1" 404 3285
Not Found: /accounts/static/public/js/bootstrap/bootstrap.min.js
[31/Mar/2020 12:31:22] "GET /accounts/static/public/js/bootstrap/bootstrap.min.js HTTP/1.1" 404 3303
[31/Mar/2020 12:31:22] "GET /static/favicon.ico HTTP/1.1" 200 15406

Подходы к исправлению

  • РУКОВОДСТВО: В этой публикации я видел, что могу оплатить следующим
STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),)
STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), 'static') #if i turn on this I get another python related error
STATIC_URL = '/static/'
TEMPLATE_DIRS = (os.path.join(BASE_DIR, 'templates'),)
  • Если я включу это, я получу еще одна ошибка, связанная с python STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), 'static')
  • Чтобы исправить ошибки, я создал /accounts/static/css/style.min.css, но я все еще получил эту ошибку. Not Found: /accounts/static/css/style.min.css [31/Mar/2020 12:31:22] "GET /accounts/static/css/style.min.css HTTP/1.1" 404 3246
  • Этот отвечает только на общие подходы, которые я уже сделал.
  • Canging. js импорт из этого
<script src="static/public/js/jquery/jquery.min.js"></script>
<script src="static/public/js/popper/popper.min.js"></script>
<script src="static/public/js/bootstrap/bootstrap.min.js"></script>
  • к этому
<script src="{% static 'public/js/jquery/jquery.min.js' %}"></script>
<script src="{% static 'public/js/popper/popper.min.js' %}"></script>
<script src="{% static 'public/js/bootstrap/bootstrap.min.js' %}"></script>
  • ОШИБКА
Not Found: /accounts/static/css/style.min.css
Not Found: /accounts/static/images/small.png
Not Found: /accounts/static/css/bootstrap/bootstrap.min.css
[31/Mar/2020 13:51:06] "GET /accounts/static/css/style.min.css HTTP/1.1" 404 3246
[31/Mar/2020 13:51:06] "GET /accounts/static/images/small.png HTTP/1.1" 404 3270
[31/Mar/2020 13:51:06] "GET /accounts/static/css/bootstrap/bootstrap.min.css HTTP/1.1" 404 3288
  • изменение этого <link rel="stylesheet" href="static/css/bootstrap/bootstrap.min.css"> на это <link rel="stylesheet" href="{% static 'css/bootstrap/bootstrap.min.css %}"> дает следующая ошибка:
TemplateSyntaxError at /accounts/signup
Could not parse the remainder: ''css/bootstrap/bootstrap.min.css' from ''css/bootstrap/bootstrap.min.css'
Request Method: GET
Request URL:    http://127.0.0.1:8000/accounts/signup
Django Version: 3.0
Exception Type: TemplateSyntaxError
Exception Value:    
Could not parse the remainder: ''css/bootstrap/bootstrap.min.css' from ''css/bootstrap/bootstrap.min.css'
Exception Location: /Users/..../site-packages/django/template/base.py in __init__, line 662
Python Executable:  /Users/..../bin/python3
Python Version: 3.7.3
Python Path:    
['/Users/..../project',
 '/Users/..../project/ven/lib/python37.zip',
 '/Users/..../project/ven/lib/python3.7',
 '/Users/..../project/ven/lib/python3.7/lib-dynload',
 '/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/lib/python3.7',
 '/Users/..../lib/python3.7/site-packages']
Server time:    Tue, 31 Mar 2020 14:00:00 +0000

Ответы [ 2 ]

2 голосов
/ 31 марта 2020

Вы должны изменить:

<script src="static/public/js/jquery/jquery.min.js"></script>
...

на

<script src="{% static 'public/js/jquery/jquery.min.js' %}"></script>
...
1 голос
/ 31 марта 2020

Посмотрите на путь, который пытается получить:

/accounts/static/public/js/jquery/jquery.min.js

Это не то, что вам нужно, поскольку в urls.py все, что начинается с /accounts, указывает на ваши представления аутентификации.

Проблема в том, что вы используете относительные пути для ваших стати c файлов: static/public/js не начинается с /, поэтому оно относительно текущей страницы. Если страница /account/login, то путь относительно /account/.

Так что в основном вам нужно иметь /static/public/js/.... Он начинается с /, поэтому это абсолютный путь.

Но вся причина определения STATIC_URL заключается в том, что вам не нужно помнить его в своем шаблоне. Для этого есть шаблонный тег static:

{% load static %}
<!-- scripts -->
<script src="{% static 'public/js/...' %}"></script>

<!-- css files -->
<link rel="stylesheet" href="{% static 'css/bootstrap/bootstrap.min.css' %}">

<!-- images -->
<img src="{% static 'images/small.png' %}">

Всегда используйте {% static %} везде в ваших шаблонах, когда ссылаетесь на файлы * stati c, это нижняя строка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...