Ich benutze Django Rest Framework. und ich bekomme immer wieder einen Fehler
Exception Type: TemplateDoesNotExist
Exception Value: rest_framework/api.html
Ich weiß nicht, wie ich falsch liege. Dies ist das erste Mal, dass ich REST Framework ausprobiere. Das ist Code.
views.py
import socket, json
from modules.data.models import *
from modules.utils import *
from rest_framework import status
from rest_framework.decorators import api_view
from rest_framework.response import Response
from modules.actions.serializers import ActionSerializer
@api_view(['POST'])
@check_field_exists_wrapper("installation")
def api_actions(request, format = None):
action_type = request.POST['action_type']
if action_type == "Shutdown" :
send_message = '1'
print "Shutting Down the system..."
elif action_type == "Enable" :
send_message = '1'
print "Enabling the system..."
elif action_type == "Disable" :
send_message = '1'
print "Disabling the system..."
elif action_type == "Restart" :
send_message = '1'
print "Restarting the system..."
if action_type in ["Shutdown", "Enable", "Disable"] : PORT = 6000
else : PORT = 6100
controllers_list = Controller.objects.filter(installation_id = kwargs['installation_id'])
for controller_obj in controllers_list:
ip = controller_obj.ip
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((ip, PORT))
s.send(send_message)
s.close()
except Exception as e:
print("Exception when sending " + action_type +" command: "+str(e))
return Response(status = status.HTTP_200_OK)
models.py
class Controller(models.Model):
id = models.IntegerField(primary_key = True)
name = models.CharField(max_length = 255, unique = True)
ip = models.CharField(max_length = 255, unique = True)
installation_id = models.ForeignKey('Installation')
serializers.py
aus django.forms importieren Widgets aus rest_framework Serializer aus modules.data.models importieren import *
class ActionSerializer(serializers.ModelSerializer):
class Meta:
model = Controller
fields = ('id', 'name', 'ip', 'installation_id')
urls.py
from django.conf.urls import patterns, url
from rest_framework.urlpatterns import format_suffix_patterns
urlpatterns = patterns('modules.actions.views',
url(r'^$','api_actions',name='api_actions'),
)
python
django
django-rest-framework
Python-Codierer
quelle
quelle
How do I get the form?
Antworten:
Stellen Sie sicher, dass Sie
rest_framework
in Ihrem aufgeführt sindsettings.py
INSTALLED_APPS
.quelle
'django_hstore',
zuINSTALLED_APPS
.Für mich
rest_framework/api.html
fehlte tatsächlich im Dateisystem aufgrund einer beschädigten Installation oder eines anderen unbekannten Grundes. Durch die Neuinstallation wurdedjangorestframework
das Problem behoben:quelle
Bitte beachten Sie, dass der DRF versucht, Daten in demselben Format zurückzugeben, das angefordert wurde. In Ihrem Browser ist dies höchstwahrscheinlich HTML. Verwenden Sie den
?format=
Parameter, um eine alternative Antwort anzugeben . Zum Beispiel :?format=json
.Der
TemplateDoesNotExist
Fehler tritt am häufigsten auf, wenn Sie einen API - Endpunkt in Ihrem Browser besuchen , und Sie nicht haben dierest_framework
in der Liste der installierten Anwendungen enthalten, wie sie von anderen Befragten beschrieben.Wenn Sie DRF nicht in Ihrer Liste der Apps enthalten haben, aber die DRF-Seite für HTML-Administratoren nicht verwenden möchten, versuchen Sie, ein alternatives Format zu verwenden, um diese Fehlermeldung zu umgehen.
Weitere Informationen aus den Dokumenten finden Sie hier: http://www.django-rest-framework.org/topics/browsable-api/#formats
quelle
Nicht Ihr Fall, sondern auch möglicher Grund ist angepasst
loaders
fürDjango
. Zum Beispiel, wenn Sie in Einstellungen (seitDjango 1.8
) haben:Django wird versuchen , nicht auf Anwendungen Ordner mit Vorlagen zu suchen, weil Sie explizit hinzufügen sollten
django.template.loaders.app_directories.Loader
inloaders
dafür.Beachten Sie, dass standardmäßig in
django.template.loaders.app_directories.Loader
enthaltenloaders
.quelle
Ich bin auf die gleiche Fehlermeldung gestoßen. In meinem Fall lag es daran, das Backend auf Jinja2 zu setzen. In meiner Einstellungsdatei:
Das Zurücksetzen auf den Standardwert behebt das Problem:
Ich bin mir immer noch nicht sicher, ob es eine Möglichkeit gibt, das Jinja2-Backend mit rest_framework zu verwenden.
quelle