Method Not Allowed:405 --anforderungsmethode
401 Unauthorized
Serializer
--Verwenden Sie fields = '__ all __'
--'required ': Nutzen Sie False voll aus
serializer.py
class HistorySerializer(serializers.ModelSerializer):
class Meta:
model = History
fields = '__all__'
extra_kwargs = {
'id': {'required': False},
'start_at': {'required': False},
}
js-cookie Importieren Sie die folgende Bibliothek https://github.com/js-cookie/js-cookie/
Beispiel.
base.html
<script src="{% static 'js.cookie/js.cookie.min.js' %}"></script>
Zu Ajax-Parametern hinzugefügt
js
params = {
csrfmiddlewaretoken: Cookies.get('csrftoken'),
...
}
js
$('#btn-add-confirm').click(() => {
let post_url = "/api/configs/";
let params = {
csrfmiddlewaretoken: Cookies.get('csrftoken'), //Ich brauche diesen Kerl
year: $("#input-year").val(),
url: $("#input-url").val(),
num_of_report: 1,
is_selected: "0"
}
$.ajax({
url: post_url,
type: "POST",
data: params,
success: function(data, textStatus, jqXHR) {
window.location.reload();
},
error: function(jqXHR, textStatus, errorThrown) {
console.warn("Konnte nicht posten");
}
});
})
https://docs.djangoproject.com/en/dev/ref/csrf/#ajax
js-cookie Siehe 403 Verboten (POST kann nicht mit JavaScript veröffentlicht werden)
BeforeSend
zu Ajax hinzugefügt
js
beforeSend: function(xhr) {
xhr.setRequestHeader("X-CSRFToken", Cookies.get('csrftoken'));
},
js
$('.btn-delete').click(function() {
let post_url = "/api/configs/";
$.ajax({
url: post_url + $(this).val() + "/",
type: "DELETE",
beforeSend: function(xhr) {
xhr.setRequestHeader("X-CSRFToken", Cookies.get('csrftoken'));
},
success: function(data, textStatus, jqXHR) {
window.location.reload();
},
error: function(jqXHR, textStatus, errorThrown) {
console.warn("Konnte nicht posten");
}
});
})
Recommended Posts