क्यों मेरी django व्यवस्थापक साइट में css शैली नहीं है


85

मैं Django विकास संस्करण का उपयोग करके एक Django व्यवस्थापक साइट बनाता हूं

लेकिन इसमें सीएसएस शैली नहीं है:

वैकल्पिक शब्द

मैं क्या कर सकता हूँ?

धन्यवाद


2
क्या कोई शैली संदर्भित है जिसे लोड नहीं किया जाता है?
पक्के डेका

1
आपको स्थिर फ़ाइलों की सेवा के लिए देव सर्वर को कॉन्फ़िगर करने की आवश्यकता है: docs.djangoproject.com/en/1.2/howto/static-files
Adam Vandenberg

1
@Pekka, हाँ, यह django डिफ़ॉल्ट शैली है, यह D: \ Python25 \ Lib \ साइट-संकुल \ django \ contrib \ admin \ Media में है
zjm1126

1
मेरे पास व्यवस्थापक स्थैतिक सामग्री का एक ही मुद्दा नहीं था, लेकिन यह nginx (विकास के माहौल के बजाय) के साथ नहीं था। असल में, अपने nginx config फ़ाइल की जाँच करें और सुनिश्चित करें कि यह आपके 'संग्रहणीय' का स्थान है। यहाँ विवरण: serverfault.com/questions/403264/…
होगा

जवाबों:


14

Django खुद पर स्थिर फ़ाइलों की सेवा नहीं करता है। आपको यह बताना होगा कि फाइलें कहां हैं।

Settings.py में ADMIN_MEDIA_PREFIX सही स्थान में Django इंगित करेंगे।

चूंकि आप विकास संस्करण का उपयोग कर रहे हैं, आप चाहते हैं कि स्टैटिक फ़ाइलों के लिए देव-विशिष्ट दस्तावेज़ कैसे-करें । एडम का लिंक आपको 1.2 संस्करण में ले जाएगा।


11
अच्छा उत्तर लेकिन अब सेटिंग्स से हटा दिया गया है और सेटिंग्स से अनुपस्थित है। अधिक अप-टू-डेट समाधानों के लिए नीचे पढ़ें।
रसेलस्टवर्ट

मेरे पास एक ही त्रुटि है, लेकिन फ्लास्क में, मैंने अपनी सीएसएस को स्थिर फ़ोल्डर के अंदर रखा। और jinj2 2 suntax अर्थात {{url_for ('static', filename = 'css / style.css')} का उपयोग करें, लेकिन फिर भी अपने लैपटॉप पर मुझे यह त्रुटि है। मैंने पृष्ठ को ताज़ा करने के लिए मजबूर किया लेकिन समस्या अभी भी मौजूद है। कृपया मदद करें
सलमान मुश्ताक

67

अपनी STATIC_ROOTऔर स्थापित करने के बाद STATIC_URL, आपको दौड़ना पड़ सकता है

python manage.py collectstatic

1
यह 1.5.2 पर भी काम करता है। मुझे किसी भी फाइल या कोड को बदलना या जोड़ना नहीं था
lukik

1
हो सकता है कि किसी के लिए उपयोगी: आप का उपयोग करना चाहिए एक ही नाम के लिए STATIC_ROOTऔर STATIC_URLउदाहरण,: मैं संयुक्त "StaticFiles" और "स्थिर" , इस्तेमाल किया STATIC_ROOT=os.path.join(BASE_DIR, "staticfiles")"और STATIC_URL="/static/"। मेरे ऐप ने ठीक काम किया, लेकिन एडमिन फाइल्स नहीं मिल सकीं। इसलिए इसे "स्टेटिकफाइल्स" या "स्टैटिक"
elano7

17

ADMIN_MEDIA_PREFIXअब अपदस्थ है, STATIC_URLइसके बजाय उपयोग करें । सेटिंग STATIC_URL = '/static/'में काम करना चाहिए। प्रयत्न:

import os.path  import sys

PROJECT_ROOT = os.path.normpath(os.path.dirname(__file__))

और फिर:

STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static')
STATIC_URL = '/static/'

Django 1.4 प्री-अल्फा SVN-16920 पर काम करता है।


1
यह मेरे लिए भी काम नहीं करता है। मुझे लगता है कि अगर मैं static/adminअंदर (मैन्युअल रूप से) फ़ोल्डर ले जाता static/css/हूं तो मैं सीएसएस फाइलों तक पहुंच सकता हूं। तो ऐसा लगता है कि मैं सीएसएस फाइलों को एक्सेस कर सकता हूं अगर अंदर हो static/filesलेकिन कलेक्टस्टिक उन्हें वहां नहीं डालता है। बेशक, फ़ोल्डर को मैन्युअल रूप से स्थानांतरित करना केवल इसलिए काम नहीं करता है क्योंकि टेम्पलेट इंगित करना जारी रखते हैं static/admin
टोटो_tico

Django v1.2 के साथ निर्मित व्यवस्थापक इंटरफ़ेस को चलाने की कोशिश करते समय मेरे लिए काम किया, 1.3 पर परीक्षण किया गया, और फिर v1.4 पर फिर से तैनात किया गया। रनिंग उबंटू 12.04 एलटीई
एडम लुईस

9

मैं Django पुस्तक ट्यूटोरियल के बाद इस मुद्दे में भाग गया। अध्याय 5 में। मॉडल को स्थापित करते हुए, पुस्तक में डिफ़ॉल्ट INSTALLED_APPS का उल्लेख करते हुए लिखा गया है- "अस्थायी रूप से उन सभी छहों को उनके सामने एक हैश चरित्र (#) डालकर टिप्पणी करें।" http://www.djangobook.com/en/2.0/chapter05.html

फिर, अध्याय 6 में, पुस्तक पाठक को उन 6 पंक्तियों में से 4 को अनसुना करने के लिए कहती है- "ध्यान दें कि हमने अध्याय 5 में इन चार INSTALLED_APPS प्रविष्टियों की टिप्पणी की थी। अब उन्हें रद्द करें।"

लेकिन स्टेटसिफाइल्स लाइन को सीएसएस को एडमिन पेज पर पुनर्स्थापित करने के लिए क्या आवश्यक है, इस तरह की असहजता 'django.contrib.staticfiles',


जैसा कि ऊपर मेरे सुझाव के अनुसार काम किया है, सेटिंग्स में थिंकपैड फ़ाइल में 'django.contrib.staticfiles' को रद्द करना। 'django.contrib.staticfiles' को INSTALLED_APPS के तहत आपकी सेटिंग में फ़ाइल में डिफ़ॉल्ट रूप से मौजूद होना चाहिए। आपके सुझाव के लिए धन्यवाद क्रिस।
user2471242

Django बुक से भी यहाँ मिला। यह एक-चरित्र को हटाने के लिए करता है।
जूल

8

मैंने इसे ठीक करने की कोशिश में कई अन्य सूत्र पढ़े ... अन्य धागों की तरह एक उपनाम का सहारा लिया। यह मानता है कि आपका अपना कस्टम ऐप स्टैटिक फ़ाइलों को सही ढंग से सेवा दे रहा है, जो यह दर्शाता है कि आपके STATIC_ROOT और STATIC_URL में उचित सेटिंग्स हैं।

STATIC_ROOT = ''
STATIC_URL = '/static/'

तब (आपकी स्थिर निर्देशिका से):

ubuntu@ip-1-2-3-4:/srv/www/mysite.com/app_folder/static$ sudo ln -s /usr/local/lib/python2.7/dist-packages/django/contrib/admin/static/admin/ admin

आशा है कि यह किसी की मदद करता है ... इस विषय पर बहुत सारे सूत्र हैं। :(


यह जवाब है काम करता है जैसे आकर्षण धन्यवाद taylor.well किया
Spikie

3

में /project_name/project_name/settings.pyआप सेट करने की जरूरत है STATIC_URLअपनी साइट क्या यूआरएल स्थिर फ़ाइलों के लिए उपयोग करने के लिए बताने के लिए।

फिर STATIC_ROOTअपने फाइलसिस्टम पर कुछ फ़ोल्डर सेट करें जो STATICFILES_DIRSसूची में सूचीबद्ध आपके किसी भी निर्देशिका के समान नहीं है ।

एक बार STATICFILES_ROOTसेट होने के बाद, आप python manage.py collectstaticप्रोजेक्ट डायरेक्टरी से भागेंगे।

यह STATICFILES_DIRSसूची में सूचीबद्ध किसी भी अन्य फ़ोल्डर में सभी व्यवस्थापक स्थिर फ़ाइलों और सभी फ़ाइलों की प्रतिलिपि बनाएगा । मूल रूप से यह आपकी सभी स्टैटिक फ़ाइलों को एक जगह पर रखता है ताकि आप अपनी साइट को तैनात करते समय उन्हें अपने सीडीएन में स्थानांतरित कर सकें। यदि आप मेरे जैसे हैं और आपके पास सीडीएन नहीं है, तो आपके पास दो विकल्प हैं:

  1. आप के रूप में स्थापित फ़ोल्डर जोड़ें STATIC_ROOTकरने के लिए STATICFILES_DIRSसूची। यह सब स्थिर फ़ाइलों का पता लगाने के लिए django में staticfiles खोजकर्ताओं को अनुमति देगा।
  2. स्थिर फ़ाइल के पूरे फ़ोल्डर को अपने फ़ाइल सिस्टम पर कहीं और ले जाएं और STATICFILES_DIRSउस नए स्थान को शामिल करने के लिए निर्देशित करें।

मैं इस जवाब के साथ सुरक्षा के बारे में कोई टिप्पणी नहीं करता हूं, यह सिर्फ उसी तरह है जैसे मैं छोटे प्रोजेक्ट के लिए अपने वेब सर्वर के साथ विकसित करने में सक्षम हूं। मुझे उम्मीद है कि आप एक CDN चाहते हैं क्योंकि django सुझाव देता है कि आप कुछ भी बड़े पैमाने पर कर रहे हैं।

अद्यतन: मैं सिर्फ इस मुद्दे में भाग गया और यह तरीका काफी नहीं है जो मुझे लगता है कि आप चाहते हैं। मेरे चलने के बाद काम करना समाप्त हो गया, मैंने दौड़ने के बाद मैंने collectstaticकेवल उस स्थिर स्टेटिक फाइल को कॉपी किया, जिसे उसने STATICFILES_ROOTउस डायरेक्टरी में रखा था, जिसका उपयोग मैंने अपनी स्टैटिक फाइल्स के लिए किया था। मेरे लिए यह समस्या हल हो गई।


3

कई अन्य जवाब उपयोगी होने के अलावा, मुझे एक समस्या थी जो अभी तक नोट नहीं की गई है। Django के 1.3 से 1.6 में अपग्रेड करने के बाद, मेरी स्टैटिक फाइल्स डायरेक्टरी में django एडमिन स्टैटिक फाइल्स का टूटा प्रतीकात्मक लिंक था।

मेरी सेटिंग्स थिंकपैड के साथ कॉन्फ़िगर किया गया था:

STATICFILES_DIRS = (
    '/var/www/static/my-dev',
)

इस उत्तर के अनुसार ,

Django अब URL / व्यवस्थापक / के तहत व्यवस्थापक स्थिर फ़ाइलों को खोजने की उम्मीद करेगा।

मेरे पास एक प्रतीकात्मक लिंक /var/www/static/my-dev/adminथा जो निम्न पर सेट था:

admin -> /usr/local/lib/python2.7/dist-packages/django/contrib/admin/media/

वह स्थान अब django 1.6 में मौजूद नहीं है, इसलिए मैंने इस लिंक को अपडेट किया:

admin -> /usr/local/lib/python2.7/dist-packages/django/contrib/admin/static/admin/

और अब मेरी व्यवस्थापक साइट ठीक से काम कर रही है।


2

यदि आप अपने django साइट को होस्ट करने के लिए Apache सर्वर का उपयोग कर रहे हैं, तो आपको अपनी साइट / site_media / static / के लिए स्थिर उपनाम बिंदु सुनिश्चित करने की आवश्यकता है। यदि आपकी स्थिर फाइलें साइट / साइट / site_media / static / के लिए / निर्देशिका में हैं, तो पिछला Apache उर्फ ​​कॉन्फ़िगरेशन काम नहीं करेगा।


2

Django ट्यूटोरियल का पालन करते समय, मुझे एक समान समस्या थी और मेरे मामले में समस्या का विकास सर्वर द्वारा उपयोग किया जाने वाला mimetype था जब टॉस फ़ाइलों की सेवा की जाती थी।

दिया गया mimetype 'एप्लिकेशन / x-css' था, जिसके कारण Chrome में चेतावनी संदेश (डेवलपर टूल के 'नेटवर्क' टैब में) चला गया था:

संसाधन को स्टाइल्सशीट के रूप में व्याख्या की गई लेकिन MIME प्रकार के एप्लिकेशन / x-css के साथ स्थानांतरित की गई: " http://127.0.0.1:8000/static/admin/css/base.css "

मेरे द्वारा पाया गया वर्कअराउंड: django webapp के मैनेजमेण्ट फाइल में निम्नलिखित पंक्तियों को जोड़कर दी जाने वाली mimetype को बदलना:

import mimetypes
mimetypes.init()
mimetypes.types_map['.css'] = 'text/css'

नोट: मेरे लिए Django 1.7.4 के साथ पायथन 2.7 और क्रोम 40.0 पर काम किया


Django 2.2.1 के साथ यह कोशिश की और यह काम नहीं करता है। मेरा व्यवस्थापक पैनल स्टैटिक .css फाइलें HTTP कोड 200 के साथ nginx द्वारा परोसी जा रही हैं, लेकिन क्रोम का कहना है कि वे इसमें आ रहे हैं Content-Type: text/plain, और वे पृष्ठ पर प्रदान नहीं किए जा रहे हैं।
उपयोगकर्ता 5359531

2

Django-१.१०.५ और अजगर -२.०.१३ में साइट विकसित करते समय एक ही तरह की समस्या आई। लेकिन मेरे फ़ायरफ़ॉक्स -51 और क्रोम में, लॉगिन पृष्ठ सीएसएस प्राप्त करने में सक्षम था, लेकिन फिर भी कोई स्टाइल नहीं था। लेकिन अजीब तरह से यह IE-8 पर काम कर रहा था।

मैंने यहां उल्लिखित हर संभव काम करने की कोशिश की और अपने स्व-संस्करणों के सेट के लिए उपयुक्त है। किसी ने काम नहीं किया।

लेकिन जब मैंने अन्य सिस्टम पर वही साइट आज़माई, जिसमें अजगर-2.7.8 था, तो यह काम कर गया।

बस पोस्ट अगर यह किसी की मदद कर सकता है ...

संपादित: बाद में मैंने पाया कि पायथन-2.7.13 में, सेटिंग्स में निम्नलिखित दो पंक्तियाँ लिखने के लिए थिंकपैड (प्लस ब्राउज़र के कैश को साफ़ करना) ने चाल चली थी

import mimetypes
mimetypes.add_type("text/css", ".css", True)

2

प्रोजेक्ट के लिए नए वर्चुअल एनवायरनमेंट बनाकर मेरी समस्या का समाधान किया गया, इससे पहले मैं सामान्य सिस्टम लेवल पायथन इंटरप्रेटर का उपयोग कर रहा था।

$ mkvirtualenv myproject

संदर्भ: https://docs.djangoproject.com/en/2.1/howto/windows/


1

सुनिश्चित करें कि 'django.contrib.staticfiles'अपने में है INSTALLED_APPSअपने settings.py में


1

Daud: python manage.py collectstatic

इस पंक्ति को Vhost में जोड़ें जो यहाँ स्थित है: /etc/apache2/sites-available/000-default.nf

उपनाम / स्थिर / व्यवस्थापक / / अनवर / www./html/example.com/static/admin

यहाँ django सेटअप के लिए संपूर्ण Vhost सेटिंग है

<VirtualHost *:80>
        ServerName gautam.tech
        ServerAlias www.gautam.tech

        WSGIDaemonProcess gautam.tech python-path=/var/www/html/gautam.tech python-home=/var/www/html/gautam.tech/venv
        WSGIProcessGroup gautam.tech
        #Your static files location
        Alias /static /var/www/html/gautam.tech/static
        Alias /media/ /var/www/html/gautam.tech/media
        Alias /static/admin/ /var/www/html/gautam.tech/static/admin

        <Directory /var/www/html/gautam.tech/static>
                Require all granted
        </Directory>

        <Directory /var/www/html/gautam.tech/media>
                       Require all granted
        </Directory>

        WSGIScriptAlias / /var/www/html/gautam.tech/myproject/wsgi.py

        DocumentRoot /var/www/html/gautam.tech
        <Directory /var/www/html/gautam.tech>
                <Files wsgi.py>
                        Require all granted
                </Files>
        </Directory>

        CustomLog /var/www/html/gautam.tech/access.log combined
        ErrorLog /var/www/html/gautam.tech/error.log
</VirtualHost>

यह निश्चित रूप से काम करेगा!


बहुत अच्छा जवाब। मुझे केवल कलेक्टोरेट कमांड चलाना था।
पॉवरअकर

0

यदि आपके पास STATICFILES_DIRS के लिए settings.py में कोई मान सेट है और घोषित फ़ोल्डर मौजूद नहीं है या गलत स्थान पर है, तो इसके कारण STATICFILES_DIRS = (os.path.join (BASE_DIR, "static") को परिभाषित करने से व्यवस्थापक को कोई स्टाइल नहीं होगा। )) और स्थिर फ़ोल्डर मौजूद नहीं है


0

विभिन्न प्रकार के सुझावों की कोशिश करने के बाद, मुझे आखिरकार एक समाधान मिला, जिसने मदद की। यहाँ वही है जो मैंने कोशिश की और जो मैं उपयोग कर रहा था। मैं django-1.11 और nginx वेब सर्वर का उपयोग कर रहा हूं। सबसे पहले, मैंने यह सुनिश्चित किया कि मेरी CSS / js फ़ाइलों को ब्राउज़र के कंसोल में 404 नहीं मिल रहा है। उसके बाद, मैं एक चेतावनी देख सकता था

संसाधन को स्टाइल्सशीट के रूप में व्याख्या की गई लेकिन माइम प्रकार के पाठ / सादे के साथ स्थानांतरित कर दिया गया

मुझे बेस टेम्पलेट में व्यवस्थापक टेम्पलेट मिले और हटा दिए गए

type="text/css"

और अब लाइनें इस तरह दिखती हैं:

<link rel="stylesheet"  href="{% block stylesheet %}{% static "admin/css/base.css" %}{% endblock %}" /> 

इसने मेरे लिए मुद्दा तय कर दिया।


0

समस्या में एक देव / परीक्षण / ठेस सर्वर में है और Nginx का उपयोग करके, कृपया नीचे दिए चरणों का पालन करें।

  • नीचे कुछ के रूप में सेटिंग्स में विन्यास सेट करें

    STATIC_URL = '/static/'
    
    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    STATIC_ROOT = os.path.join(BASE_DIR, 'static')
    
  • स्थिर फोल्डर में css और js फाइल बनाने के लिए नीचे दिया गया कमांड चलाएँ

    $ python manage.py collectstatic
    
  • स्थिर फ़ाइलों की सेवा के लिए / etc / nginx / साइट्स-सक्षम / उदाहरण (Nginx) में कॉन्फ़िगर करें

    location /static/ {
            alias /project/root/folder/static/;
    }
    

0

यह ठीक और आसानी से काम करता है। मैंने फ़ोल्डर को मैन्युअल रूप से स्थानांतरित कर दिया है। बस आपको अपने static/adminप्रोजेक्ट को मुख्य प्रोजेक्ट की निर्देशिका से कॉपी करना होगा और इसे public_html में पेस्ट करना static/होगा यदि कोई स्थिर फ़ोल्डर नहीं है जिसे आपको टर्मिनल में कमांड चलाना है

python manage.py collectstatic

यहाँ आप Django व्यवस्थापक के css कार्य के साथ जाते हैं


0

स्थिर फ़ाइलों को कॉन्फ़िगर करना सुनिश्चित करें कि django.contrib.staticfilesआपके INSTALLED_APPS में शामिल है ।

उदाहरण के लिए, अपनी सेटिंग्स फ़ाइल में, STATIC_URL को परिभाषित करें:

STATIC_URL = '/static/'

अधिक जानकारी के लिए स्थिर फाइलें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.