Saya menggunakan Django Rest Framework. dan saya terus mendapatkan kesalahan
Exception Type: TemplateDoesNotExist
Exception Value: rest_framework/api.html
Saya tidak tahu bagaimana saya salah. Ini adalah pertama kalinya saya mencoba REST Framework. Ini adalah kode.
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
dari django.forms impor widget dari rest_framework impor serializers dari modules.data.models 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-coder
sumber
sumber
How do I get the form?
Jawaban:
Pastikan Anda telah
rest_framework
terdaftar disettings.py
INSTALLED_APPS
.sumber
'django_hstore',
untukINSTALLED_APPS
.Bagi saya,
rest_framework/api.html
sebenarnya hilang pada sistem file karena instalasi yang rusak atau alasan lain yang tidak diketahui. Menginstal ulangdjangorestframework
memperbaiki masalah:sumber
Harap perhatikan bahwa DRF mencoba mengembalikan data dalam format yang sama dengan yang diminta. Dari browser Anda, ini kemungkinan besar adalah HTML. Untuk menentukan respons alternatif, gunakan
?format=
parameter. Sebagai contoh:?format=json
.The
TemplateDoesNotExist
kesalahan terjadi paling sering ketika Anda mengunjungi titik akhir API di browser Anda dan Anda tidak memilikirest_framework
termasuk dalam daftar aplikasi yang terpasang, seperti yang dijelaskan oleh responden lainnya.Jika Anda tidak memiliki DRF yang disertakan dalam daftar aplikasi Anda, tetapi tidak ingin menggunakan halaman DRF Admin HTML, coba gunakan format alternatif untuk 'menyampingkan' pesan kesalahan ini.
Info lebih lanjut dari dokumen di sini: http://www.django-rest-framework.org/topics/browsable-api/#formats
sumber
Bukan kasus Anda, tetapi juga kemungkinan alasan disesuaikan
loaders
untukDjango
. Misalnya, jika Anda memiliki pengaturan (sejakDjango 1.8
):Django tidak akan mencoba untuk melihat aplikasi folder dengan template, karena Anda harus secara eksplisit menambahkan
django.template.loaders.app_directories.Loader
ke dalamloaders
untuk itu.Perhatikan, bahwa secara default
django.template.loaders.app_directories.Loader
disertakan keloaders
.sumber
Saya menemukan pesan kesalahan yang sama. Dalam kasus saya, itu karena pengaturan backend ke Jinja2. Di file pengaturan saya:
Mengubah ini kembali ke default memperbaiki masalah:
Masih tidak yakin apakah ada cara untuk menggunakan backend Jinja2 dengan rest_framework.
sumber