मैं Django विकास संस्करण का उपयोग करके एक Django व्यवस्थापक साइट बनाता हूं
लेकिन इसमें सीएसएस शैली नहीं है:
मैं क्या कर सकता हूँ?
धन्यवाद
मैं Django विकास संस्करण का उपयोग करके एक Django व्यवस्थापक साइट बनाता हूं
लेकिन इसमें सीएसएस शैली नहीं है:
मैं क्या कर सकता हूँ?
धन्यवाद
जवाबों:
Django खुद पर स्थिर फ़ाइलों की सेवा नहीं करता है। आपको यह बताना होगा कि फाइलें कहां हैं।
Settings.py में ADMIN_MEDIA_PREFIX सही स्थान में Django इंगित करेंगे।
चूंकि आप विकास संस्करण का उपयोग कर रहे हैं, आप चाहते हैं कि स्टैटिक फ़ाइलों के लिए देव-विशिष्ट दस्तावेज़ कैसे-करें । एडम का लिंक आपको 1.2 संस्करण में ले जाएगा।
अपनी STATIC_ROOT
और स्थापित करने के बाद STATIC_URL
, आपको दौड़ना पड़ सकता है
python manage.py collectstatic
STATIC_ROOT
और STATIC_URL
उदाहरण,: मैं संयुक्त "StaticFiles" और "स्थिर" , इस्तेमाल किया STATIC_ROOT=os.path.join(BASE_DIR, "staticfiles")"
और STATIC_URL="/static/"
। मेरे ऐप ने ठीक काम किया, लेकिन एडमिन फाइल्स नहीं मिल सकीं। इसलिए इसे "स्टेटिकफाइल्स" या "स्टैटिक"
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 पर काम करता है।
static/admin
अंदर (मैन्युअल रूप से) फ़ोल्डर ले जाता static/css/
हूं तो मैं सीएसएस फाइलों तक पहुंच सकता हूं। तो ऐसा लगता है कि मैं सीएसएस फाइलों को एक्सेस कर सकता हूं अगर अंदर हो static/files
लेकिन कलेक्टस्टिक उन्हें वहां नहीं डालता है। बेशक, फ़ोल्डर को मैन्युअल रूप से स्थानांतरित करना केवल इसलिए काम नहीं करता है क्योंकि टेम्पलेट इंगित करना जारी रखते हैं static/admin
।
मैं Django पुस्तक ट्यूटोरियल के बाद इस मुद्दे में भाग गया। अध्याय 5 में। मॉडल को स्थापित करते हुए, पुस्तक में डिफ़ॉल्ट INSTALLED_APPS का उल्लेख करते हुए लिखा गया है- "अस्थायी रूप से उन सभी छहों को उनके सामने एक हैश चरित्र (#) डालकर टिप्पणी करें।" http://www.djangobook.com/en/2.0/chapter05.html
फिर, अध्याय 6 में, पुस्तक पाठक को उन 6 पंक्तियों में से 4 को अनसुना करने के लिए कहती है- "ध्यान दें कि हमने अध्याय 5 में इन चार INSTALLED_APPS प्रविष्टियों की टिप्पणी की थी। अब उन्हें रद्द करें।"
लेकिन स्टेटसिफाइल्स लाइन को सीएसएस को एडमिन पेज पर पुनर्स्थापित करने के लिए क्या आवश्यक है, इस तरह की असहजता 'django.contrib.staticfiles',
मैंने इसे ठीक करने की कोशिश में कई अन्य सूत्र पढ़े ... अन्य धागों की तरह एक उपनाम का सहारा लिया। यह मानता है कि आपका अपना कस्टम ऐप स्टैटिक फ़ाइलों को सही ढंग से सेवा दे रहा है, जो यह दर्शाता है कि आपके 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
आशा है कि यह किसी की मदद करता है ... इस विषय पर बहुत सारे सूत्र हैं। :(
में /project_name/project_name/settings.py
आप सेट करने की जरूरत है STATIC_URL
अपनी साइट क्या यूआरएल स्थिर फ़ाइलों के लिए उपयोग करने के लिए बताने के लिए।
फिर STATIC_ROOT
अपने फाइलसिस्टम पर कुछ फ़ोल्डर सेट करें जो STATICFILES_DIRS
सूची में सूचीबद्ध आपके किसी भी निर्देशिका के समान नहीं है ।
एक बार STATICFILES_ROOT
सेट होने के बाद, आप python manage.py collectstatic
प्रोजेक्ट डायरेक्टरी से भागेंगे।
यह STATICFILES_DIRS
सूची में सूचीबद्ध किसी भी अन्य फ़ोल्डर में सभी व्यवस्थापक स्थिर फ़ाइलों और सभी फ़ाइलों की प्रतिलिपि बनाएगा । मूल रूप से यह आपकी सभी स्टैटिक फ़ाइलों को एक जगह पर रखता है ताकि आप अपनी साइट को तैनात करते समय उन्हें अपने सीडीएन में स्थानांतरित कर सकें। यदि आप मेरे जैसे हैं और आपके पास सीडीएन नहीं है, तो आपके पास दो विकल्प हैं:
STATIC_ROOT
करने के लिए STATICFILES_DIRS
सूची। यह सब स्थिर फ़ाइलों का पता लगाने के लिए django में staticfiles खोजकर्ताओं को अनुमति देगा।STATICFILES_DIRS
उस नए स्थान को शामिल करने के लिए निर्देशित करें।मैं इस जवाब के साथ सुरक्षा के बारे में कोई टिप्पणी नहीं करता हूं, यह सिर्फ उसी तरह है जैसे मैं छोटे प्रोजेक्ट के लिए अपने वेब सर्वर के साथ विकसित करने में सक्षम हूं। मुझे उम्मीद है कि आप एक CDN चाहते हैं क्योंकि django सुझाव देता है कि आप कुछ भी बड़े पैमाने पर कर रहे हैं।
अद्यतन: मैं सिर्फ इस मुद्दे में भाग गया और यह तरीका काफी नहीं है जो मुझे लगता है कि आप चाहते हैं। मेरे चलने के बाद काम करना समाप्त हो गया, मैंने दौड़ने के बाद मैंने collectstatic
केवल उस स्थिर स्टेटिक फाइल को कॉपी किया, जिसे उसने STATICFILES_ROOT
उस डायरेक्टरी में रखा था, जिसका उपयोग मैंने अपनी स्टैटिक फाइल्स के लिए किया था। मेरे लिए यह समस्या हल हो गई।
कई अन्य जवाब उपयोगी होने के अलावा, मुझे एक समस्या थी जो अभी तक नोट नहीं की गई है। 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/
और अब मेरी व्यवस्थापक साइट ठीक से काम कर रही है।
यदि आप अपने django साइट को होस्ट करने के लिए Apache सर्वर का उपयोग कर रहे हैं, तो आपको अपनी साइट / site_media / static / के लिए स्थिर उपनाम बिंदु सुनिश्चित करने की आवश्यकता है। यदि आपकी स्थिर फाइलें साइट / साइट / site_media / static / के लिए / निर्देशिका में हैं, तो पिछला Apache उर्फ कॉन्फ़िगरेशन काम नहीं करेगा।
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 पर काम किया
Content-Type: text/plain
, और वे पृष्ठ पर प्रदान नहीं किए जा रहे हैं।
Django-१.१०.५ और अजगर -२.०.१३ में साइट विकसित करते समय एक ही तरह की समस्या आई। लेकिन मेरे फ़ायरफ़ॉक्स -51 और क्रोम में, लॉगिन पृष्ठ सीएसएस प्राप्त करने में सक्षम था, लेकिन फिर भी कोई स्टाइल नहीं था। लेकिन अजीब तरह से यह IE-8 पर काम कर रहा था।
मैंने यहां उल्लिखित हर संभव काम करने की कोशिश की और अपने स्व-संस्करणों के सेट के लिए उपयुक्त है। किसी ने काम नहीं किया।
लेकिन जब मैंने अन्य सिस्टम पर वही साइट आज़माई, जिसमें अजगर-2.7.8 था, तो यह काम कर गया।
बस पोस्ट अगर यह किसी की मदद कर सकता है ...
संपादित: बाद में मैंने पाया कि पायथन-2.7.13 में, सेटिंग्स में निम्नलिखित दो पंक्तियाँ लिखने के लिए थिंकपैड (प्लस ब्राउज़र के कैश को साफ़ करना) ने चाल चली थी
import mimetypes
mimetypes.add_type("text/css", ".css", True)
प्रोजेक्ट के लिए नए वर्चुअल एनवायरनमेंट बनाकर मेरी समस्या का समाधान किया गया, इससे पहले मैं सामान्य सिस्टम लेवल पायथन इंटरप्रेटर का उपयोग कर रहा था।
$ mkvirtualenv myproject
संदर्भ: https://docs.djangoproject.com/en/2.1/howto/windows/
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>
यह निश्चित रूप से काम करेगा!
यदि आपके पास STATICFILES_DIRS के लिए settings.py में कोई मान सेट है और घोषित फ़ोल्डर मौजूद नहीं है या गलत स्थान पर है, तो इसके कारण STATICFILES_DIRS = (os.path.join (BASE_DIR, "static") को परिभाषित करने से व्यवस्थापक को कोई स्टाइल नहीं होगा। )) और स्थिर फ़ोल्डर मौजूद नहीं है
विभिन्न प्रकार के सुझावों की कोशिश करने के बाद, मुझे आखिरकार एक समाधान मिला, जिसने मदद की। यहाँ वही है जो मैंने कोशिश की और जो मैं उपयोग कर रहा था। मैं django-1.11 और nginx वेब सर्वर का उपयोग कर रहा हूं। सबसे पहले, मैंने यह सुनिश्चित किया कि मेरी CSS / js फ़ाइलों को ब्राउज़र के कंसोल में 404 नहीं मिल रहा है। उसके बाद, मैं एक चेतावनी देख सकता था
संसाधन को स्टाइल्सशीट के रूप में व्याख्या की गई लेकिन माइम प्रकार के पाठ / सादे के साथ स्थानांतरित कर दिया गया
मुझे बेस टेम्पलेट में व्यवस्थापक टेम्पलेट मिले और हटा दिए गए
type="text/css"
और अब लाइनें इस तरह दिखती हैं:
<link rel="stylesheet" href="{% block stylesheet %}{% static "admin/css/base.css" %}{% endblock %}" />
इसने मेरे लिए मुद्दा तय कर दिया।
समस्या में एक देव / परीक्षण / ठेस सर्वर में है और 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/;
}
यह ठीक और आसानी से काम करता है। मैंने फ़ोल्डर को मैन्युअल रूप से स्थानांतरित कर दिया है। बस आपको अपने static/admin
प्रोजेक्ट को मुख्य प्रोजेक्ट की निर्देशिका से कॉपी करना होगा और इसे public_html में पेस्ट करना static/
होगा यदि कोई स्थिर फ़ोल्डर नहीं है जिसे आपको टर्मिनल में कमांड चलाना है
python manage.py collectstatic
यहाँ आप Django व्यवस्थापक के css कार्य के साथ जाते हैं
स्थिर फ़ाइलों को कॉन्फ़िगर करना
सुनिश्चित करें कि django.contrib.staticfiles
आपके INSTALLED_APPS में शामिल है ।
उदाहरण के लिए, अपनी सेटिंग्स फ़ाइल में, STATIC_URL को परिभाषित करें:
STATIC_URL = '/static/'
अधिक जानकारी के लिए स्थिर फाइलें