টেম্পলেটডোস নোটএক্সিস্ট - জ্যাঙ্গো ত্রুটি


117

আমি জ্যাঙ্গো রেস্ট ফ্রেমওয়ার্ক ব্যবহার করছি। এবং আমি একটি ত্রুটি পেতে থাকি

Exception Type: TemplateDoesNotExist
Exception Value: rest_framework/api.html

আমি জানি না আমি কীভাবে ভুল করছি। এই প্রথম প্রথমবারের মতো রেস্ট ফ্রেমওয়ার্কে চেষ্টা করছি। এটি কোড।

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

django.forms থেকে উইন্ডোজগুলি বিশ্রাম_ফ্রেমওয়ার্ক থেকে আমদানি সিরিয়ালাইজগুলি মডিউলগুলি থেকে আমদানি করে els

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'),
)

34
আপনার সেটিংসে কী "রেস্ট_ফ্রেমওয়ার্ক" তালিকাভুক্ত রয়েছে? ইপি INSTALLED_APPS?
স্কট উডাল 15

খুব সুন্দর ভুল। এর জন্য ধন্যবাদ
পাইথন-কোডার

আমার আর একটা সন্দেহ আছে আমি কীভাবে এতে একটি ফর্ম পাব যাতে আমি ফর্মটিতে কিছু তথ্য পোস্ট করি, সেই মানগুলি দিয়ে ডিবিতে আঘাত করি এবং ফলাফলটি পাই? How do I get the form?
পাইথন-কোডার 15

@ স্কটওডাল দয়া করে উত্তর পোস্ট করুন, এবং কিছু পয়েন্ট পান!
উদীয় 0

উত্তর:


284

আপনি নিজের rest_frameworkতালিকাভুক্ত করেছেন তা নিশ্চিত করুন settings.py INSTALLED_APPS


ডিআরএফের নির্ভরতা নিবন্ধন না করার ফলেও হতে পারে। আমার ক্ষেত্রে আমাকে যুক্ত 'django_hstore',করতে হয়েছিল INSTALLED_APPS
শ্যাকার

5

আমার জন্য, rest_framework/api.html দুর্নীতিগ্রস্থ ইনস্টলেশন বা অন্য কোনও অজানা কারণে প্রকৃতপক্ষে ফাইল সিস্টেমে অনুপস্থিত। পুনরায় ইনস্টল করার djangorestframeworkফলে সমস্যাটি স্থির হয়েছে:

$ pip install --upgrade djangorestframework

1
একই জিনিস আমার ঘটেছে। নোট করুন যে কমান্ডটি সম্ভবত একটি বেমানান সংস্করণে আপগ্রেড হবে (এমনকি যদি আপনার সেটআপ.পি এবং / অথবা প্রয়োজনীয়তা। টেক্সট অন্যথায় বলেন)) আপনি পাইপ আনইনস্টল / ইনস্টল বা সঠিক সংস্করণ নির্দিষ্ট করতে পারেন।
হোর্হে ভার্গাস

5

দয়া করে নোট করুন যে ডিআরএফ অনুরোধ করা হয়েছিল একই ফর্ম্যাটে ডেটা ফেরত দেওয়ার চেষ্টা করে। আপনার ব্রাউজার থেকে, এটি সম্ভবত এইচটিএমএল। বিকল্প প্রতিক্রিয়া নির্দিষ্ট করতে, ?format=প্যারামিটারটি ব্যবহার করুন । উদাহরণস্বরূপ: ?format=json

TemplateDoesNotExistত্রুটি হিসেবে সবচেয়ে বেশি যে ঘটে যখন আপনি আপনার ব্রাউজারে একটি API শেষবিন্দু পরিদর্শন হয় এবং আপনি কি না আছে rest_frameworkহিসাবে অন্যান্য উত্তরদাতাদের দ্বারা বর্ণিত, ইনস্টল করা অ্যাপ্লিকেশনগুলি আপনার তালিকায় অন্তর্ভুক্ত।

আপনার অ্যাপ্লিকেশানের তালিকায় যদি ডিআরএফ অন্তর্ভুক্ত না থাকে তবে এইচটিএমএল অ্যাডমিন ডিআরএফ পৃষ্ঠাটি ব্যবহার করতে না চান তবে এই ত্রুটি বার্তাকে 'সাইড-স্টেপ' করতে বিকল্প ফর্ম্যাটটি ব্যবহার করার চেষ্টা করুন।

ডক্স থেকে আরও তথ্য এখানে: http://www.django-rest-framework.org/topics/browsable-api/# ফর্ম্যাটস


4

আপনার ক্ষেত্রে নয়, সম্ভাব্য কারণটিও কাস্টমাইজ করা loadersহয়েছে Django। উদাহরণস্বরূপ, আপনার যদি সেটিংসে থাকে (যেহেতু Django 1.8):

TEMPLATES = [
{
    ...
    'OPTIONS': {
        'context_processors': [
            'django.template.context_processors.debug',
            'django.template.context_processors.request',
            'django.contrib.auth.context_processors.auth',
            'django.contrib.messages.context_processors.messages'
        ],
        'loaders': [
            'django.template.loaders.filesystem.Loader',
        ],
        ...
    }
}]

জ্যাঙ্গো টেমপ্লেট সহ অ্যাপ্লিকেশন ফোল্ডারগুলিকে দেখার চেষ্টা করবে না, কারণ এর জন্য আপনার স্পষ্টভাবে যুক্ত django.template.loaders.app_directories.Loaderকরা উচিত loaders

লক্ষ্য করুন, এটি ডিফল্টরূপে django.template.loaders.app_directories.Loaderঅন্তর্ভুক্ত loaders


সতর্কতা:?: (1_8.W001) একক TEMPLATE_ * সেটিংসটি জাঙ্গো ১.৮ এ অবহেলা করা হয়েছিল এবং টেম্পলেটগুলি অভিধানটি অগ্রাধিকার নিয়েছে। আপনাকে অবশ্যই নিম্নলিখিত ডিফল্ট মানগুলি আপনার ডিফল্ট TEMPLATES ডিক্টে স্থাপন করতে হবে: TEMPLATE_DEBUG।
andilabs

0

আমি একই ত্রুটি বার্তায় দৌড়েছি। আমার ক্ষেত্রে, এটি জিনজা 2 এ ব্যাকএন্ড সেট করার কারণে হয়েছিল। আমার সেটিংস ফাইলটিতে:

TEMPLATES = [
{
    'BACKEND': 'django.template.backends.jinja2.Jinja2',
...

এটিকে ডিফল্টরূপে ফিরিয়ে দেওয়া সমস্যার সমাধান করেছে:

TEMPLATES = [
{
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
...

এখনও বিশ্রাম_ ফ্রেমওয়ার্ক সহ জিনজা 2 ব্যাকএন্ড ব্যবহার করার কোনও উপায় আছে কিনা তা এখনও নিশ্চিত নয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.