[英]I want to use Ajax to send message in Django
我想在 Django 中使用 ajax 發表評論。
我有與 Post 類相關的 Message Class,並且我使用 PostDetailView 來顯示帖子和評論的內容。
我收到錯誤Reverse for 'user-posts' with arguments '('',)' not found. 1 pattern(s) tried: ['user\\/(?P<username>[^/]+)\\Z']
Reverse for 'user-posts' with arguments '('',)' not found. 1 pattern(s) tried: ['user\\/(?P<username>[^/]+)\\Z']
我還在引導鏈接中突出顯示。
我試圖刪除這兩個相應的部分,但我仍然得到同樣的錯誤。
這是我的代碼
網址.py
urlpatterns = [
path('',PostListView.as_view(),name='blog-home'),
path('user/<str:username>',UserPostListView.as_view(),name='user-posts'),
path('post/<int:pk>',PostDetailView.as_view(),name='post-detail'),
]
視圖.py
class PostDetailView(DetailView):
model = Post
def get(self, *args, **kwargs):
form = CommentForm()
comments = Message.objects.all()
return render(self.request, 'blog/post_detail.html',
{"form": form, "comments": comments})
def post(self, *args, **kwargs):
if self.request.is_ajax and self.request.method == "POST":
form = CommentForm(self.request.POST)
if form.is_valid():
instance = form.save()
ser_instance = serializers.serialize('json', [ instance, ])
return JsonResponse({"instance": ser_instance}, status=200)
else:
return JsonResponse({"error": form.errors}, status=400)
return JsonResponse({"error": ""}, status=400)
html(“用戶帖子”的鏈接在哪里)
<div class="post-header">
<h2 class="post-title">{{object.title}}</h2>
</div>
<div class="author-detail">
<a
href="{% url 'user-posts' object.author.username %}"
class="roomListRoom__author"
>
<div class="avatar avatar--small">
<img src="{{object.author.profile.image.url}}" />
</div>
<span>@{{object.author.username}}</span>
</a>
<img
class="rounded-circle account-img"
src="{{object.author.profile.image.url}}"
/>
<div class="author-info">
<p>
@<a href="{% url 'user-posts' object.author.username %}">
{{object.author}}
</a>
</p>
<p>{{object.date_posted|timesince|split_timesince:"," }}前</p>
</div>
</div>
腳本.js
$(document).ready(function () {
$("#comment-form").submit(function (e) {
e.preventDefault();
var serializedData = $(this).serialize();
$('[name="csrfmiddlewaretoken"]').attr("value");
$.ajax({
type: "POST",
url: $(this).attr("action"),//here will be '{% url ;post-detail object.id %}'
data: serializedData,
beforeSend: function (response) {
$(".save-comment").addClass("disabled").text("saving...");
console.log(_comment);
},
success: function (response) {
$("#friend-form").trigger("reset");
var instance = JSON.parse(response["instance"]);
var fields = instance[0]["fields"];
$("#comments").prepend(
`<div class="comment">
<div class="avatar avatar--small">
<img
src="{{message.user.profile.image.url}}"
alt="user profile image"
/>
</div>
<div class="comment-body">
<span class="comment-author">}</span>
<span>${fields["body"]}}</span>
</div>
</div>`
);
// $(".save-comment").removeClass("disabled").text("Submit");
},
error: function (response) {
alert(response["responseJSON"]["error"]);
},
});
});
});
我怎樣才能解決這個問題?
"{% url 'user-posts'' username=username|safe %}"
請記住,如果您想在您的 url 中使用用戶名,您只需將視圖中的用戶名作為 args 並使用 django 模板語言將其發送到您的模板
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.