2013-08-14 8 views
6

मैं गोलांग के "एचटीएमएल/टेम्पलेट" पैकेज का उपयोग कर रहा हूं ताकि एक ही फ्रेम के समान _base.html का उपयोग करके एकाधिक पृष्ठों पर सामग्री प्रदान की जा सके। मैं एक के रूप में सेवा करने के लिए कई एचटीएमएल फाइलों (_base.html और सामग्री फ़ाइल) मर्ज करता हूं।गोलांग टेम्पलेट विभिन्न निर्देशिका स्तरों पर सीएसएस की सेवा

func main() { 
http.HandleFunc("/", indexHandler) 
http.HandleFunc("/blog/", blogHandler) 
http.Handle("/css/", http.StripPrefix("/css/", http.FileServer(http.Dir("http/css")))) 
http.ListenAndServe(":1337", nil) 
} 

func indexHandler(w http.ResponseWriter, r *http.Request) { 
index := template.Must(template.ParseFiles(
    "http/html/_base.html", 
    "http/html/index.html", 
)) 
index.Execute(w, nil) 
} 

func blogHandler(w http.ResponseWriter, r *http.Request) { 
blog := template.Must(template.ParseFiles(
    "http/html/_base.html", 
    "http/html/blog.html", 
)) 
blog.Execute(w, nil) 
} 

मेरी वेबसर्वर मेरी सीएसएस ठीक renders की जड़ पर ऐसा करने से, क्योंकि सही निर्देशिका के लिए _base.html अंक में मेरी .css को एचटीएमएल लिंक टैग का उपयोग:

<link href="css/style.css" rel="stylesheet"> 

लेकिन जब मैं नेविगेट/से/ब्लॉग/मेरा सीएसएस एक स्तर नीचे चला गया (या मैं एक स्तर ऊपर गया, हालांकि आप इसे देखना चाहते हैं) और इसलिए सीएसएस href अचानक /blog/css/style.css पर इंगित करता है और इस प्रकार यह प्रस्तुत नहीं करेगा।

यह प्रत्येक सामग्री-फ़ाइल में css के स्तर को बताकर आसानी से तय किया जा सकता है जिसे मैं _base.html के साथ विलय करता हूं, हालांकि मुझे लगता है कि वहां एक और, क्लीनर, अलग-अलग तरीका होना चाहिए। क्या इस मामले में मेरा आंत गलत है?

उत्तर

5

यह परीक्षण किया था नहीं, इसलिए मैं वास्तव में यकीन नहीं है, लेकिन के बारे में क्या

<link href="css/style.css" rel="stylesheet"> 

बदलते

<link href="/css/style.css" rel="stylesheet"> 

के लिए?

+0

डर्न, मैं ऐसा एन 00 बी हूं, और आप बहुत उपयोगी हैं श्रीमान। पता होना चाहिए था, लेकिन भूल गया। बहुत बहुत धन्यवाद – Dani

संबंधित मुद्दे