Rolf B: Apache Server: GCI File kann .css Datei nicht nutzen

Beitrag lesen

Hallo hmm,

ooookay. Meine Python-Kenntnisse liegen, auf einer Skala von 1-10000, bei ca 0,5. Aber mir scheint, dass Python keine ideale Sprache zum Ausgeben von Webseiten ist, wenn man das ganze HTML per Stringoperation zusammenkleben muss. Geht das nicht eleganter, mit Template-Frameworks? Schnelles googeln ergab diesen Treffer in einem Python-Forum:

(...) pures cgi geht natürlich, aber das stelle ich mir ziemlich furchtbar vor.
PHP ist ein Framework zur Erstellung von Webseiten, Python ist es nicht, sondern mit Python und einem Webframework kannst Du Webseiten erstellen.

Und was Du da machst, ist nackiges Schlangen-CGI. Kein Wunder, dass Du Dich dabei windest und zischst.

Was ich auch finde (docs.python.org), ist:

Cross-platform compatibility note: because of the nature of text editors on non-UNIX platforms, it is unwise to use a mixture of spaces and tabs for the indentation in a single source file. It should also be noted that different platforms may explicitly limit the maximum indentation level.

Und das ist bei Dir nicht sauber. Ich habe deinen Code herunterkopiert und die Einrückung der akte.css Zeile ändert sich. Das ist in Python eine sensible Sache. Es kann natürlich sein, dass das mal wieder der Übertragung ins Forum geschuldet ist; ich gehe davon aus, dass diese Zeile auf den Level des for-Statements gehört.

Als erstes würde ich mal die ganzen escapten " in ' abändern - soweit das machbar ist. Aber mir scheint, das sind eine Menge. Das dürfte die Lesbarkeit verbessern. Ich würde auch die Stringkonkatenation in der akte.css Zeile entfernen. Das ist unnötige Anführungszeichenakrobatik. Dann sieht's doch gleich besser aus, oder?

def getContent(c, errCode, errMsg, sucMsg, headScript, js_list):
	Functions.writeToErrorLog(config,user,group,"INFO","Start build response content...")
	res  = "<!DOCTYPE html>\n" 
	res += "<html>\n"
	res += "	<head>\n"
	res += "		<meta charset='UTF-8' />\n"
	res += "		<title>Akte</title>\n"
	res += "		<link rel='icon' href='/images/icon.png' />\n"
	for css in config['css']:
		res += "		<link rel='stylesheet' href='" + css + "' />\n"
	res += "		<link rel='stylesheet' href='/css/akte.css' />\n"
	res += "		<style class='init' type='text/css'>\n" \
		"			th, td {\n" \
		"				white-space: nowrap;\n" \
		"			}\n" \
		"			div.dataTables_wrapper {\n" \
		"				width: 100%;\n" \
		"				margin: 0 auto;\n" \
		"			}\n" \
		"		</style>\n"

Aber der Knackpunkt ist wohl das for-Statement. Was steht in config['css'] drin? Ist das etwas iterierbares? Oder ist das ein String, den Du erstmal in Teile zerlegen musst? Was hast Du auskommentiert, um den HTTP 500 zu beseitigen? Die for-Zeile und die eingerückte res+=... Zuweisung darunter?

Rolf

--
sumpsi - posui - obstruxi