[英]POST request to “/” returns a 403 forbidden
我正在尝试通过 POST 请求向 / 路由发送 320 个字符的文本帖子。 在这条路线上,我有一个类似 Twitter 的社交网络网站,用于发布帖子和关注用户。 为了制作和写帖子,我希望它是异步的,我的意思是,我希望用户写一篇文章,当他按下按钮发布它时,不应该重新加载页面。
这是我的 html 文件:
<div class="container">
<h1>All Posts</h1>
<div class="row">
<div class="span12 well">
<form method="post">
{% csrf_token %}
<textarea class="span11" id="new_message" name="new_message"
placeholder="Write something nice" rows="5"></textarea>
<h6 id="characters">320 characters remaining</h6>
<button class="btn btn-info" type="submit">Post New Message</button>
</form>
</div>
</div>
</div>
这就是我在 JavaScript 中尝试做的事情,但我得到了 403:
document.querySelector("form").onsubmit = () => {
//sending values by POST method
fetch('/', {
method: 'POST',
body: JSON.stringify({
content: document.querySelector('#new_message').value,
})
})
.then(response => response.json())
.then(result => {
// Print result
console.log(result);
})
event.preventDefault()
}
});
我也不太确定这是否是正确的方法。
后端:
def index(request):
if request.method == "POST":
content = request.POST["new_message"]
print(request.user)
print(content)
return render(request, "network/index.html")
#post = Posts(user=request.user, content=content)
return render(request, "network/index.html")
def login_view(request):
if request.method == "POST":
# Attempt to sign user in
username = request.POST["username"]
password = request.POST["password"]
user = authenticate(request, username=username, password=password)
# Check if authentication successful
if user is not None:
login(request, user)
return HttpResponseRedirect(reverse("index"))
else:
return render(request, "network/login.html", {
"message": "Invalid username and/or password."
})
else:
return render(request, "network/login.html")
def logout_view(request):
logout(request)
return HttpResponseRedirect(reverse("index"))
def register(request):
if request.method == "POST":
username = request.POST["username"]
email = request.POST["email"]
# Ensure password matches confirmation
password = request.POST["password"]
confirmation = request.POST["confirmation"]
if password != confirmation:
return render(request, "network/register.html", {
"message": "Passwords must match."
})
# Attempt to create new user
try:
user = User.objects.create_user(username, email, password)
user.save()
except IntegrityError:
return render(request, "network/register.html", {
"message": "Username already taken."
})
login(request, user)
return HttpResponseRedirect(reverse("index"))
else:
return render(request, "network/register.html")
由于 403 表示禁止,我会尝试检查您尝试调用的实体的权限。 确保正确的文件具有正确级别的执行权限。 通过 apache 或您使用的其他 web 服务器检查您的错误日志,访问日志可能会在那里找到一些东西。 此外,在您的 JS 中,您正在向控制台记录一些内容,JS 向控制台推送了什么?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.