Почему данные, переданные с фронтенда с помощью ajax, показывают NonType в функции представления в Django
Я создал форму в html, которая принимает некоторое значение от пользователя, при нажатии на кнопку submit вызывается функция JavaScript, которая передает данные с помощью ajax на сервер Django. Но вместо того, чтобы получить данные в функции представления, на бэкенде появляется ошибка NoneType.
Моя html-форма:-
<div class="cropDetail">
<form method="post">
{% csrf_token %}
<div class="form__group">
<label htmlFor="name" class="form__label"> Nitrogen </label>
<input type="number" id="nitrogen" name="nitrogen" class="form__input" required />
<p class="error"></p>
</div>
<div class="form__group">
<label htmlFor="name" class="form__label"> Potassium </label>
<input
type="number"
id="potassium"
class="form__input"
name="potassium"
required
/>
<p class="error"></p>
</div>
<div class="form__group">
<label htmlFor="name" class="form__label"> Phosphorus </label>
<input
type="number"
id="phosphorus"
class="form__input"
name="phosphorus"
required
/>
<p class="error"></p>
</div>
<div class="form__group">
<label htmlFor="name" class="form__label"> PH </label>
<input type="number" id="ph" class="form__input" name="ph" required />
<p className="error"></p>
</div>
<div class="form__group">
<label htmlFor="name" class="form__label"> Rainfall </label>
<input type="number" id="rainfall" class="form__input" name="rainfall" required />
<p class="error"></p>
</div>
<div class="form__group">
<label htmlFor="name" class="form__label"> City </label>
<input type="text" id="city" class="form__input" name="city" required />
<p class="error"></p>
</div>
<div class="form__actions">
<button onclick="passdata()">Submit</button>
</div>
</form>
</div>
Моя функция JavaScript:-
const nitro = document.getElementById("nitrogen");
const potass = document.getElementById("potassium");
const phos = document.getElementById("phosphorus");
const phi = document.getElementById("ph");
const rain = document.getElementById("rainfall");
const cityi = document.getElementById("city");
function passdata(event) {
event.preventDefault();
const usernitrogen = nitro.value;
const userpotassium = potass.value;
const userphosphorus = phos.value;
const userph = phi.value;
const userrainfall = rain.value;
const usercity = cityi.value;
console.log(usernitrogen);
$.ajax({
type:"POST",
url: "crop_prediction/",
data: {
'nitrogen': usernitrogen,
'potassium': userpotassium,
'phosphorus': userphosphorus,
'ph': userph,
'rainfall': userrainfall,
'city': usercity,
},
success: function () {
alert(`Thankyou for your feedback`);
},
});
};
urls.py:-
from django.urls import path, include
from .import views
urlpatterns = [
path('', views.home),
path('crop_prediction/', views.crop_prediction),
path('crop_detail/', views.crop_info)
]
Виды функций:-
def crop_prediction(request):
global resultJson, firebase
resultJson = dumps({"error": "some error"})
if request.method == "POST":
N = float(request.POST.get("nitrogen"))
P = float(request.POST.get("phosphorus"))
K = float(request.POST.get("potassium"))
ph = float(request.POST.get("ph"))
rainfall = float(request.POST.get("rainfall"))
city = request.POST.get("city")
resultJson = dumps({"error": "some error occured"})
if weather_fetch(city) != None:
temperature, humidity = weather_fetch(city)
data = np.array([[N, P, K, temperature, humidity, ph, rainfall]])
my_prediction = pickle.load(
open('CropRecommendation\model\model.pkl', 'rb'))
final_prediction = my_prediction.predict(data)
value = "rice"
firebase = firebase.FirebaseApplication(
'https://e-farma-5dc42-default-rtdb.firebaseio.com/')
predicted_crop_info = firebase.get(value, None)
predicted_crop_info["crop"] = value
resultJson = dumps(predicted_crop_info)
return render(request, "Efarma/index.html", {"result": resultJson})
# return render(request, 'efarma/cropDetail.html', {"result": resultJson})
else:
return render(request, "Efarma/index.html", {"result": resultJson})
ошибка:- введите описание изображения здесь