Hallo zusammen,
ich will einen Webserver mit Django und Ajax aufsetzen.
mein Django-Server funktioniert auch schon.
nun wollte ich folgendes Ajax Beispiel ausprobieren:
http://www.ajaxbuch.de/code/frameworks/ ... eCookie.py
ich habe den Programmcode in den Ordner templates hineinkopiert unter test.html
auch die JavaScripte hab ich entsprechend angelegt
kann mir jemand sagen was ich falsch mache? muss ich den Python Quellcode seperat auslagern?
vielen Dank im voraus
Django templates
Hallo erdmulch,
das Beispiel basiert ja auf einer cgi-Schnittstelle und nicht auf django.
Das wird so nicht zusammen funktionieren.
Ich habe auf Browser-Seite gute Erfahrung mit jquery und ajax gemacht.
Zum Beispiel in /template/index.html
Und wenn Du in django eine Funktion auf /index.html und /ajax.html mappst:
Fertig ist das ajax-Beispiel.
das Beispiel basiert ja auf einer cgi-Schnittstelle und nicht auf django.
Das wird so nicht zusammen funktionieren.
Ich habe auf Browser-Seite gute Erfahrung mit jquery und ajax gemacht.
Zum Beispiel in /template/index.html
Code: Alles auswählen
<html>
<head>
<script src="/static/jquery.js"></script>
</head>
<body>
<b>Frage: </b> Was ist 2*3?</br>
<a href='#' onclick='$("#answer").load("/ajax.html");'>Antwort</a>
<div id='answer'></div>
</body>
</html>
Code: Alles auswählen
def get_index(request):
return TemplateResponse(request, 'index.html', {});
def get_answer(request):
return HttpResponse('Die Antwort ist: <b>6</b>')
Leider kommt folgende Fehlermeldung:
No module named response
obwohl ich das Modul mit folgendem Befehl import habe:
from django.template.response import TemplateResponse
was mach ich falsch? gibt es einen neuen Import Befehl?
vielen Dank im voraus
No module named response
obwohl ich das Modul mit folgendem Befehl import habe:
from django.template.response import TemplateResponse
was mach ich falsch? gibt es einen neuen Import Befehl?
vielen Dank im voraus
Hallo erdmulch,
In django Version 1.4 ist es genau dieser import Befehl.
Welche Version verwendest Du?
Grüße
Sirius
In django Version 1.4 ist es genau dieser import Befehl.
Welche Version verwendest Du?
Was funktioniert dann bei Deinem Server?erdmulch hat geschrieben:mein Django-Server funktioniert auch schon.
Grüße
Sirius
hallo nochmals,
habe Django nun upgedatet auf Version 1.4.2
auf version 1.1.1 hatte ich folgendes Script ohne Probleme laufen:
diese Funktion schreibt Daten, die von der Seriellen Schnittstelle kommen in eine Datenbank.
mit der Djangoversion 1.1.1 hat dies sehr gut funktioniert.
leider musste ich meine Djangoversion updatet, da ich ansonsten kein httpTemplateResponse ausführen konnte
kann mir jemand sagen was ich anpassen muss dass es bei der Djangoversion1.4.2 wieder funktioniert?
es erscheint folgende Fehlermeldung:
Peter:~/tmp/djangoprojs/pypost$ ./Schnittstelle.py
/usr/local/lib/python2.6/dist-packages/Django-1.4.2-py2.6.egg/django/conf/__init__.py:75: DeprecationWarning: The ADMIN_MEDIA_PREFIX setting has been removed; use STATIC_URL instead.
"use STATIC_URL instead.", DeprecationWarning)
Temperatur 23.0
Traceback (most recent call last):
File "./Schnittstelle.py", line 30, in <module>
save()
File "./Schnittstelle.py", line 26, in save
a.save()
File "/usr/local/lib/python2.6/dist-packages/Django-1.4.2-py2.6.egg/django/db/models/base.py", line 463, in save
self.save_base(using=using, force_insert=force_insert, force_update=force_update)
File "/usr/local/lib/python2.6/dist-packages/Django-1.4.2-py2.6.egg/django/db/models/base.py", line 551, in save_base
result = manager._insert([self], fields=fields, return_id=update_pk, using=using, raw=raw)
File "/usr/local/lib/python2.6/dist-packages/Django-1.4.2-py2.6.egg/django/db/models/manager.py", line 203, in _insert
return insert_query(self.model, objs, fields, **kwargs)
File "/usr/local/lib/python2.6/dist-packages/Django-1.4.2-py2.6.egg/django/db/models/query.py", line 1593, in insert_query
return query.get_compiler(using=using).execute_sql(return_id)
File "/usr/local/lib/python2.6/dist-packages/Django-1.4.2-py2.6.egg/django/db/models/sql/compiler.py", line 908, in execute_sql
cursor = self.connection.cursor()
File "/usr/local/lib/python2.6/dist-packages/Django-1.4.2-py2.6.egg/django/db/backends/dummy/base.py", line 15, in complain
raise ImproperlyConfigured("settings.DATABASES is improperly configured. "
django.core.exceptions.ImproperlyConfigured: settings.DATABASES is improperly configured. Please supply the ENGINE value. Check settings documentation for more details.
habe Django nun upgedatet auf Version 1.4.2
auf version 1.1.1 hatte ich folgendes Script ohne Probleme laufen:
Code: Alles auswählen
#!/usr/bin/env python
#-*- coding: utf-8 -*-
from articles.models import Article, Talkback
from datetime import datetime
import os
import serial
import time
def save():
time.sleep(15)
ser = serial.Serial('/dev/rfcomm0')
time.sleep(15)
try:
while True:
line = ser.readline()
print line
a = Article(title=line, slug='', pub_date=datetime.now(), author='', content='')
a.save()
finally:
ser.close()
save()
diese Funktion schreibt Daten, die von der Seriellen Schnittstelle kommen in eine Datenbank.
mit der Djangoversion 1.1.1 hat dies sehr gut funktioniert.
leider musste ich meine Djangoversion updatet, da ich ansonsten kein httpTemplateResponse ausführen konnte
kann mir jemand sagen was ich anpassen muss dass es bei der Djangoversion1.4.2 wieder funktioniert?
es erscheint folgende Fehlermeldung:
Peter:~/tmp/djangoprojs/pypost$ ./Schnittstelle.py
/usr/local/lib/python2.6/dist-packages/Django-1.4.2-py2.6.egg/django/conf/__init__.py:75: DeprecationWarning: The ADMIN_MEDIA_PREFIX setting has been removed; use STATIC_URL instead.
"use STATIC_URL instead.", DeprecationWarning)
Temperatur 23.0
Traceback (most recent call last):
File "./Schnittstelle.py", line 30, in <module>
save()
File "./Schnittstelle.py", line 26, in save
a.save()
File "/usr/local/lib/python2.6/dist-packages/Django-1.4.2-py2.6.egg/django/db/models/base.py", line 463, in save
self.save_base(using=using, force_insert=force_insert, force_update=force_update)
File "/usr/local/lib/python2.6/dist-packages/Django-1.4.2-py2.6.egg/django/db/models/base.py", line 551, in save_base
result = manager._insert([self], fields=fields, return_id=update_pk, using=using, raw=raw)
File "/usr/local/lib/python2.6/dist-packages/Django-1.4.2-py2.6.egg/django/db/models/manager.py", line 203, in _insert
return insert_query(self.model, objs, fields, **kwargs)
File "/usr/local/lib/python2.6/dist-packages/Django-1.4.2-py2.6.egg/django/db/models/query.py", line 1593, in insert_query
return query.get_compiler(using=using).execute_sql(return_id)
File "/usr/local/lib/python2.6/dist-packages/Django-1.4.2-py2.6.egg/django/db/models/sql/compiler.py", line 908, in execute_sql
cursor = self.connection.cursor()
File "/usr/local/lib/python2.6/dist-packages/Django-1.4.2-py2.6.egg/django/db/backends/dummy/base.py", line 15, in complain
raise ImproperlyConfigured("settings.DATABASES is improperly configured. "
django.core.exceptions.ImproperlyConfigured: settings.DATABASES is improperly configured. Please supply the ENGINE value. Check settings documentation for more details.
Zuletzt geändert von Anonymous am Samstag 24. November 2012, 18:02, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Code-Tags gesetzt.
Grund: Quelltext in Python-Code-Tags gesetzt.
hallo nochmals,
jetzt hat alles soweit geklappt. Leider findet er die templates nicht mehr.
Folgende Fehlermeldung erscheint:
TemplateDoesNotExist at /articles/
articles.html
Request Method: GET
Request URL: http://192.168.0.110:9090/articles/
Django Version: 1.4.2
Exception Type: TemplateDoesNotExist
Exception Value:
articles.html
Exception Location: /usr/local/lib/python2.6/dist-packages/Django-1.4.2-py2.6.egg/django/template/loader.py in find_template, line 138
Python Executable: /usr/bin/python
Python Version: 2.6.5
Python Path:
['/home/Peter/tmp/djangoprojs/Wetterstation',
'/usr/local/lib/python2.6/dist-packages/pymodbus-0.5.1-py2.6.egg',
'/usr/local/lib/python2.6/dist-packages/pyserial-2.6-py2.6.egg',
'/usr/local/lib/python2.6/dist-packages/nose-1.1.2-py2.6.egg',
'/usr/local/lib/python2.6/dist-packages/Django-1.4.2-py2.6.egg',
'/usr/lib/python2.6',
'/usr/lib/python2.6/plat-linux2',
'/usr/lib/python2.6/lib-tk',
'/usr/lib/python2.6/lib-old',
'/usr/lib/python2.6/lib-dynload',
'/usr/lib/python2.6/dist-packages',
'/usr/lib/python2.6/dist-packages/PIL',
'/usr/lib/python2.6/dist-packages/gst-0.10',
'/usr/lib/pymodules/python2.6',
'/usr/lib/python2.6/dist-packages/gtk-2.0',
'/usr/lib/pymodules/python2.6/gtk-2.0',
'/usr/lib/python2.6/dist-packages/wx-2.8-gtk2-unicode',
'/usr/local/lib/python2.6/dist-packages']
Server time: Sat, 24 Nov 2012 21:54:13 +0100
in welchen Ordner muss ich meine html Seite kopieren, dass es mein Server findet?
im Prinzip hab ich jetzt in jedem Ordner die "articles.html" seite kopiert, aber er findet sie dennoch nicht
den Python Pfad habe ich auf:"'/home/Peter/tmp/djangoprojs/Wetterstation'" gesetzt
kann mir jemand helfen
jetzt hat alles soweit geklappt. Leider findet er die templates nicht mehr.
Folgende Fehlermeldung erscheint:
TemplateDoesNotExist at /articles/
articles.html
Request Method: GET
Request URL: http://192.168.0.110:9090/articles/
Django Version: 1.4.2
Exception Type: TemplateDoesNotExist
Exception Value:
articles.html
Exception Location: /usr/local/lib/python2.6/dist-packages/Django-1.4.2-py2.6.egg/django/template/loader.py in find_template, line 138
Python Executable: /usr/bin/python
Python Version: 2.6.5
Python Path:
['/home/Peter/tmp/djangoprojs/Wetterstation',
'/usr/local/lib/python2.6/dist-packages/pymodbus-0.5.1-py2.6.egg',
'/usr/local/lib/python2.6/dist-packages/pyserial-2.6-py2.6.egg',
'/usr/local/lib/python2.6/dist-packages/nose-1.1.2-py2.6.egg',
'/usr/local/lib/python2.6/dist-packages/Django-1.4.2-py2.6.egg',
'/usr/lib/python2.6',
'/usr/lib/python2.6/plat-linux2',
'/usr/lib/python2.6/lib-tk',
'/usr/lib/python2.6/lib-old',
'/usr/lib/python2.6/lib-dynload',
'/usr/lib/python2.6/dist-packages',
'/usr/lib/python2.6/dist-packages/PIL',
'/usr/lib/python2.6/dist-packages/gst-0.10',
'/usr/lib/pymodules/python2.6',
'/usr/lib/python2.6/dist-packages/gtk-2.0',
'/usr/lib/pymodules/python2.6/gtk-2.0',
'/usr/lib/python2.6/dist-packages/wx-2.8-gtk2-unicode',
'/usr/local/lib/python2.6/dist-packages']
Server time: Sat, 24 Nov 2012 21:54:13 +0100
in welchen Ordner muss ich meine html Seite kopieren, dass es mein Server findet?
im Prinzip hab ich jetzt in jedem Ordner die "articles.html" seite kopiert, aber er findet sie dennoch nicht
den Python Pfad habe ich auf:"'/home/Peter/tmp/djangoprojs/Wetterstation'" gesetzt
kann mir jemand helfen
Du musst die zu durchsuchenden Verzeichnisse in der settings.py deines Projektes angeben.
erstmals vielen Dank.
jetzt habe ich auch schon das nächste Problem
und zwar habe ich meine view wie oben gezeigt programmiert
wenn ich jetzt auf "antwort" klicke erscheint in meinem Browser Eingabefeld folgendes:
http://192.168.0.110:9090/articles/#
sprich das zeichen: "'#" ist hinzugekommen.
Allerdings erscheint keine antwort
muss ich den Pfad in der urls.py eintragen? wenn ja wie oder mach ich sonst noch was falsch?
dies war mal mein Ansatz:
(r'^articles/#$', 'Wetterstation.articles.views.get_answer'),
vielen Dank im voraus nochmals
jetzt habe ich auch schon das nächste Problem
und zwar habe ich meine view wie oben gezeigt programmiert
wenn ich jetzt auf "antwort" klicke erscheint in meinem Browser Eingabefeld folgendes:
http://192.168.0.110:9090/articles/#
sprich das zeichen: "'#" ist hinzugekommen.
Allerdings erscheint keine antwort
muss ich den Pfad in der urls.py eintragen? wenn ja wie oder mach ich sonst noch was falsch?
dies war mal mein Ansatz:
(r'^articles/#$', 'Wetterstation.articles.views.get_answer'),
vielen Dank im voraus nochmals
Der # heißt in html Anker und ist dazu da an eine bestimmte Stelle auf der Seite zu springen.
Das ganze läuft nur intern im Browser ab, Dein Server bekommt davon nichts mit.
Bei Links die nur javascript aufrufen sollen, wird oft ein '#' ohne Namen als Referenz
angegeben, damit der Browser nichts tut, falls das Javascript nicht läuft.
Wenn keine Antwort kommt, dann gibt es einen Fehler im Javascript. Du kannst in
der Fehlerkonsole/Entwicklertools Deines Browsers die Fehlermeldung nachschauen.
Grüße
Sirius
Code: Alles auswählen
<html>
<body>
<a name="oben">hier ist oben</a>
...
viel Text
...
<a href="#oben">nach oben...</a>
</body>
</html>
Bei Links die nur javascript aufrufen sollen, wird oft ein '#' ohne Namen als Referenz
angegeben, damit der Browser nichts tut, falls das Javascript nicht läuft.
Wenn keine Antwort kommt, dann gibt es einen Fehler im Javascript. Du kannst in
der Fehlerkonsole/Entwicklertools Deines Browsers die Fehlermeldung nachschauen.
Grüße
Sirius
@erdmulch: Das '#' erscheint da weil man dem ``href``-Attribut irgend etwas zuweisen musste. Du musst die URL auf die Funtkion mappen die Du per JavaScript anforderst. Ich könnte jetzt raten welche das ist, aber es wäre vielleicht generell einfacher wenn Du das selbst heraus findest. Das sollte doch zum Beispiel im Log des Webservers stehen.
Da JavaScript im Browser ohne weitere Hilfsmittel immer recht „still und leise” auf die Nase fällt wenn etwas nicht funktioniert wie es soll, müsstest Du Dich für Deinen bevorzugten Browser am besten mal nach Unterstützung für Entwickler umsehen. Bei Firefox ist zum Beispiel das Firebug-Plugin recht umfangreich, und Chrome bringt unter `→ Tools → Developer Tools` so einiges schon mit.
Da JavaScript im Browser ohne weitere Hilfsmittel immer recht „still und leise” auf die Nase fällt wenn etwas nicht funktioniert wie es soll, müsstest Du Dich für Deinen bevorzugten Browser am besten mal nach Unterstützung für Entwickler umsehen. Bei Firefox ist zum Beispiel das Firebug-Plugin recht umfangreich, und Chrome bringt unter `→ Tools → Developer Tools` so einiges schon mit.