Wifi_add() отсутствует 1 обязательный позиционный аргумент: 'request' при попытке создать объект
Я создал этот пост, потому что не смог найти его на SO. Я не использую класс, поэтому странно получать ошибку 'request not found error'.
Я сталкиваюсь с этой проблемой уже 2 дня, вот мой код спасибо.
Такая же проблема была у меня при просмотре ajax пользователя, но я решил ее, изменив User.objects.create() на form.save в просмотре. Но не возможно решить здесь, пожалуйста, взгляните на код Я действительно благодарен вам.
#models.py
class Wifi(models.Model):
ssid = models.CharField(max_length=150)
password = models.CharField(max_length=150)
user = models.ForeignKey(User, on_delete=models.CASCADE)
def __str__(self):
return self.ssid + " " + self.user.username
#views.py
def configrations(request):
wifi_form = WifiForm()
if request.method == 'POST' and request.POST.get("operation") == "wifi":
wifi_form = WifiForm(request.POST)
if wifi_form.is_valid():
data = wifi_form.cleaned_data
wifi_obj = Wifi.objects.create(**data, user=request.user)
ctx = {
'created': True,
'success': True,
'ssid': wifi_form.cleaned_data['ssid'],
'password': wifi_form.cleaned_data['password'],
'msg':'Wifi configuration created',
}
return JsonResponse(ctx)
return render(request, 'web/configrations.html',{'wifi_form':wifi_form})
#my forms.py
class WifiForm(forms.ModelForm):
ssid = forms.CharField(widget=forms.TextInput(
attrs={'class': "form-control"}))
password = forms.CharField(widget=forms.PasswordInput(
attrs={'class': "form-control"}))
class Meta:
model = Wifi
fields = ['ssid','password']
моя ajax-функция:
<script>
$('#submit_wifi').click(function(){
var wifi_name = $('#wifi_name').val()
var wifi_pass = $('#wifi_pass').val()
$.ajax({
type: "POST",
url: "{% url 'config' %}",
headers: {
'X-CSRFToken': '{{ csrf_token }}'
},
data: {'operation':'wifi', 'ssid':wifi_name,'password':wifi_pass},
dataType: "json",
success: function(response) {
if(response.success == true){
$('#wifi_form').hide();
$('#mode_form').show();
console.log(response)
}
else if(response.status==false){
console.log(response.msg)
}
},
error: function(rs, e) {
console.log('error')
}
});
});
</script>
Проблема связана с именем модели. Мне пришлось изменить название модели с Wifi на Wifie и исправить другие строки, которые я импортирую в модель Wifi. Таким образом, все решено.