Python 如何在Django中单击按钮?
Views.py-我希望能够转到用户页面,然后单击并从一个按钮跟踪他们,就像twitter一样,我知道如何添加用户,正如我的视图中的add变量所示,但我真的不知道如何将其实际实现到一个允许我跟踪用户的按钮中!我已经坚持了一整天,这可能是非常明显的,所以任何帮助都是非常感谢的!我不认为我的模板是这个问题的需要,但如果是让我知道Python 如何在Django中单击按钮?,python,django,Python,Django,Views.py-我希望能够转到用户页面,然后单击并从一个按钮跟踪他们,就像twitter一样,我知道如何添加用户,正如我的视图中的add变量所示,但我真的不知道如何将其实际实现到一个允许我跟踪用户的按钮中!我已经坚持了一整天,这可能是非常明显的,所以任何帮助都是非常感谢的!我不认为我的模板是这个问题的需要,但如果是让我知道 @login_required def home(request, username): context = {} if username =
@login_required
def home(request, username):
context = {}
if username == request.user.username:
return HttpResponseRedirect('/home /user/{0}'.format(request.user.username))
else:
user = User.objects.get(username=username)
user_profile = UserProfile.objects.filter(user=user)
following = user.userprofile.follows.all()
number = user.userprofile.follows.all().count()
tweet = Tweet.objects.filter(userprofile=user_profile).order_by('date')
yum = Tweet.objects.filter(userprofile=user_profile).count()
add = user.userprofile.follows.add(request.user.userprofile)
context['user'] = user
context['profile'] = user_profile
context['follow'] = following
context['number'] = number
context['tweet'] = tweet
context['yum'] = yum
return render (request, 'homer.html', context)
models.py
from django.db import models
from django.contrib.auth.models import User
import os
def get_image_path(instance, filename):
return os.path.join('photos', str(instance.user.id), filename)
class UserProfile(models.Model):
user = models.OneToOneField(User)
bio = models.CharField(max_length=120, blank=True, verbose_name='Biography')
follows = models.ManyToManyField('self', related_name='followers', symmetrical=False, blank=True)
theme = models.ImageField(upload_to=get_image_path, blank=True)
profile_picture = models.ImageField(upload_to=get_image_path, blank=True)
def __str__(self):
return self.bio
class Tweet(models.Model):
userprofile = models.ForeignKey(UserProfile)
tweets = models.TextField(max_length=120)
date = models.DateTimeField()
def __str__(self):
return self.tweets
你可以在GET或POST上这样做。这是一个简单的观点
from django.http import JsonResponse
def follow_user(request, user_profile_id):
profile_to_follow = get_object_or_404(UserProfile, pk=user_profile_id)
user_profile = request.user.userprofile
data = {}
if profile_to_follow.follows.filter(id=user_profile.id).exists():
data['message'] = "You are already following this user."
else:
profile_to_follow.follows.add(user_profile)
data['message'] = "You are now following {}".format(profile_to_follow)
return JsonResponse(data, safe=False)
然后,在您的urls.py中,您需要将以下内容添加到您的urlpatterns中
url(r'^follow/(?<user_profile_id>[\d]+)/$', views.follow_user)
这假设一些html如下所示:
$('.follow-button').click(function() {
$.get($(this).data('url'), function(response) {
$('.message-section').text(response.message).show();
});
});
<body>
<div class="message-section" style="display:none;"></div>
{% for user_profile in all_user_profiles %}
<button data-url="{% url "example_app.views.follow_user" user_profile_id=user_profile.id %}"
class="follow-button" type="button">Follow</button>
{% endfor %}
</body>
{所有用户配置文件%中的用户配置文件%}
跟随
{%endfor%}
是我编的。它只是你用来浏览用户或用户档案的任何东西。