Tags:
Forums: 

คือ ผมอยากรบกวน ไฟล์ .css ที่กำหนดการจัดหน้า base.html(กำหนดให้เป็นหน้า template) ไม่ทำงานครับ ไม่ทราบว่าต้องทำยังไงครับ
1. settings.py
TEMPLATE_DIRS = (
'/home/somkid/Desktop/sanook/web/mysite/template'
)

  1. หน้า base.html และ .css เก็บเอาใว้ที่เดียวกันครับภายใน
    พาธนี้ครับ -->> '/home/somkid/Desktop/sanook/web/mysite/template'

  2. คำตอบที่ต้องการ ทราบคือ ว่าเพราะอะไรถึง base.html ไม่โหลด .css มาทำงานครับ และจะมีวิธีการอย่างไรครับ สำหรับที่จะทำให้มันทำงานครับ

                  ขอบคุณไว้ ณ ที่นี้ครับ  
    
Get latest news from Blognone
By: 21Aki
ContributorAndroidWindows
on 9 January 2010 - 10:55 #148039
21Aki's picture

อันนี้ผมไม่เก่ง Python นะครับ
แต่ปกติ CSS ที่โหลดผ่านไฟล์ HTML จะใช้ TAG ในการโหลดขึ้นมาใช่ไหมครับ?

เช่น

<link type="text/css" rel="stylesheet" href="/modules/views/css/views.css?8" />

ในกรณีนี้สามารถเขียน HTML เป็น

<link type="text/css" rel="stylesheet" href="ชื่อไฟล์CSS.css" />

ได้เลยครับ ถ้าอยู่ไดเร็คทรอรี่เดียวกัน

กรณีที่ Include CSS ผ่าน Template แล้วรันผ่าน Web Server
ให้ดูก่อนว่า path ที่เราเปิดอยู่ที่ไหน โดยไม่ต้องคำนึงว่าบนเครื่องเราเก็บอยู่ที่ไหนครับ
เช่น ถ้าเปิดเว็บที่ Include ผ่าน Browser ที่ URL http://localhost/web/mysite/
แสดงว่าถ้าเราอยากดู CSS ก็อยู่ที่ http://localhost/web/mysite/template/ชื่อไฟล์CSS.css
ซึ่งอยู่คนละที่กับ Template ที่เราวางไว้
วิธีง่ายๆ คือ ให้ลองใส่ ../ เพื่อย้อนไดเร็คทรอรี่ข้างหน้าชื่อไฟล์ CSS ที่ละครั้งแล้วรันดูเช่น

<link type="text/css" rel="stylesheet" href="../ชื่อไฟล์CSS.css" />
(หากรันที่ http://localhost/web/mysite/)

ถ้ายังไม่ได้ก็เป็น

<link type="text/css" rel="stylesheet" href="../../ชื่อไฟล์CSS.css" />
(หากรันที่ http://localhost/web/)

ลองดูครับ ^^

By: kowito2
Android
on 9 January 2010 - 16:14 #148122

กลับไปที่ Concept การออกแบบเหมือนเดิมครับ DJango Template ไม่ใช่ Static File ดังนั้น หากคุณนำไฟล์ CSS ไปรวมไว้ใน Template ก็ไม่เกิดผล เพราะตัว Django ก็จะมองมันเป็นเพียง Template อีกอันนึงเท่านั้น ให้คุณลองนำไฟล์ css แยกไปต่างหาก และกำหนดให้เป็น static file เสียก็จะเรียบร้อย

ลองอ่านเพิ่มเติมที่นี่ How to serve static files

ขอติงเรื่องตั้งคำถาม หัวข้อกระทู้ไม่ได้สื่อความถึงคำถามที่อยากได้ ลองอ่านกติการมารยาทในการตั้งคำถามดูหน่อย ปักหมุดอยู่อันแรก

อีกเรื่อง ผมไม่ใช่เทพ การที่ผมมาตอบคำถามคงไม่เป็นการจุ้นจ้านเกินไปนะครับ

By: som2526_1
AndroidUbuntu
on 9 January 2010 - 22:15 #148170 Reply to:148122

ไปอ่านตามลิงค์แล้วครับก็ยังไม่ได้ อยู่ดีครับ ถ้าไม่เป็นการบกวนเกินไปช่วยอธิบายขั้นตอนหน่อยได้ไหมครับ

                  ขอบคุณมากครับ
By: kowito2
Android
on 10 January 2010 - 14:21 #148233 Reply to:148170

CSS ที่พูดถึงเป็น link ไปยังไฟล์ถูกหรือไม่ครับ
ให้ทดลองนำ CSS มาไว้ใน template ดูก่อน จะพบว่าทำงานได้ถูกต้อง
แสดงว่าเกิดปัญหาจาก Django หาไฟล์ CSS ไม่เจอ

เพราะว่าอะไร?
เกิดจากกระบวนการ Render template ของ Django ไม่ได้มอง Template เป็น Static file ทั่วไป ในเวลาแสดงผล Django จะโหลดข้อมูล Template และนำมาประมวลผล แล้วตอบกลับเป็น HTML หรืออื่นๆ ดังนั้น ไฟล์ CSS จะไม่ได้อยู่ในกระบวนการนี้

แล้วจะทำยังไง
เราจะต้องกำหนดให้ Django รู้ว่า Path ต่อไปนี้ เป็น Static file ธรรมดา ไม่ต้องประมวลผล Webserver สามารถใช้ไฟล์นี้ได้เลย ยกตัวอย่างเช่น
เพิ่มข้อมูลลง url.conf


from django.conf import settings
...
(r'^css/(?P.*)$', 'django.views.static.serve',
        {'document_root': '/path/to/css'}),


แปลว่าถ้าอ้างถึง http://website.com/css ให้ไปเลือกหาไฟล์จาก '/path/to/css' เลย

By: som2526_1
AndroidUbuntu
on 10 January 2010 - 20:49 #148278 Reply to:148233

ขอบคุณมากๆๆ ครับได้แล้วครับ

By: som2526_1
AndroidUbuntu
on 9 January 2010 - 20:10 #148155

ขอบคุณครับ