J'utilise Django Rest Framework. et je reçois toujours une erreur
Exception Type: TemplateDoesNotExist
Exception Value: rest_framework/api.html
Je ne sais pas comment je vais mal. C'est la première fois que j'essaye le framework REST. C'est du 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
à partir de django.forms importer des widgets à partir de rest_framework importer des sérialiseurs à partir de modules.data.models importer *
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
codeur python
la source
la source
How do I get the form?
Réponses:
Assurez-vous que vous avez
rest_framework
répertorié dans votresettings.py
INSTALLED_APPS
.la source
'django_hstore',
àINSTALLED_APPS
.Pour moi,
rest_framework/api.html
il manquait en fait le système de fichiers en raison d'une installation corrompue ou d'une autre raison inconnue. La réinstallation adjangorestframework
résolu le problème:la source
Veuillez noter que le DRF tente de renvoyer les données dans le même format que celui demandé. Depuis votre navigateur, il s'agit probablement du HTML. Pour spécifier une réponse alternative, utilisez le
?format=
paramètre. Par exemple:?format=json
.L'
TemplateDoesNotExist
erreur se produit le plus souvent lorsque vous visitez un point final de l' API dans votre navigateur et vous ne pas avoirrest_framework
inclus dans la liste des applications installées, comme décrit par d' autres répondants.Si DRF n'est pas inclus dans votre liste d'applications, mais que vous ne souhaitez pas utiliser la page HTML Admin DRF, essayez d'utiliser un format alternatif pour `` faire un pas de côté '' de ce message d'erreur.
Plus d'informations sur la documentation ici: http://www.django-rest-framework.org/topics/browsable-api/#formats
la source
Pas votre cas, mais aussi des raisons possibles est personnalisée
loaders
pourDjango
. Par exemple, si vous avez dans les paramètres (depuisDjango 1.8
):Django ne tentera pas de regarder des dossiers d' applications avec des modèles, parce que vous devez explicitement ajouter
django.template.loaders.app_directories.Loader
enloaders
cela.Notez que, par défaut,
django.template.loaders.app_directories.Loader
inclus dansloaders
.la source
J'ai rencontré le même message d'erreur. Dans mon cas, cela était dû à la configuration du backend sur Jinja2. Dans mon fichier de paramètres:
Le retour à la valeur par défaut a résolu le problème:
Je ne sais toujours pas s'il existe un moyen d'utiliser le backend Jinja2 avec rest_framework.
la source