本教程介绍如何在 Django Web 框架中执行 ajax 请求。我们将创建一个简单的点赞应用程序作为示例的一部分。
词汇表
执行:
1. 启动 Django 项目 – 这里我假设您已完成 Django 安装。
$ django-admin startproject django_example
$ cd django_example $ python manage.py startapp post
转到 django_example/settings.py 添加后应用程序
现在你将拥有类似这样的文件:
2. 创建模型: 要创建模型,请转到 post 目录并打开 models.py。
在 models.py 中。首先,创建一个帖子表。要创建帖子表,您需要编写:
class Post(models.Model): post_heading = models.CharField(max_length=200) post_text = models.TextField() def __unicode__(self): # If python2 use __str__ if python3 return unicode(self.post_heading)
然后在 models.py 中,像表一样创建。要像表一样创建,您需要编写:
class Like(models.Model): post = models.ForeignKey(Post, on_delete = models.CASCADE)
进行迁移并迁移步骤:
$ python manage.py makemigrations $ python manage.py migrate
完成这些步骤后,我们的数据库表就可以使用了。
3. 创建视图:
要创建视图,我们需要进入post目录并打开views.py
首先,导入之前创建的模型和 HTTP 响应
from .models import Post, Like from django.http import HttpResponse
创建一个索引视图来呈现所有帖子。代码示例:
def index(request): posts = Post.objects.all() # Getting all the posts from database return render(request, 'post/index.html', { 'posts': posts })
创建点赞帖子视图来点赞帖子。当我们点击“喜欢按钮”时,将调用此视图。代码示例:
def likePost(request): if request.method == 'GET': post_id = request.GET['post_id'] likedpost = Post.objects.get(pk=post_id) #getting the liked posts m = Like(post=likedpost) # Creating Like Object m.save() # saving it to store in database return HttpResponse("Success!") # Sending an success response else: return HttpResponse("Request method is not a GET")
创建视图后,我们将开始编写模板和 jQuery 来执行 ajax 请求。
4. 创建 URL:
要创建 URL,请打开 django_example/urls.py。你的 django_example/urls.py 应该看起来像这样:
from django.conf.urls import include, url from django.contrib import admin urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^', include('post.urls')), # To make post app available at / ]
要创建 URL,请创建文件 post/urls.py。你的 post/urls.py 应该看起来像这样:
from django.conf.urls import url from . import views urlpatterns = [ url(r'^$', views.index, name='index'), # index view at / url(r'^likepost/$', views.likePost, name='likepost'), # likepost view at /likepost ]
5、制作模板并执行ajax请求:
创建文件 post/templates/post/index.html。代码示例:
<!DOCTYPE html> <html> <head> <title>Like Post App</title> </head> <body> <p id="message"></p> {% for post in posts %} <h3>{{ forloop.counter }}) {{ post.post_heading }}</h3> <p>{{ post.post_text }} </p> <a class="likebutton" id="like{{post.id}}" href="#" data-catid="{{ post.id }}">Like</a> {% endfor %} <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script> <script type="text/javascript"> $('.likebutton').click(function(){ var catid; catid = $(this).attr("data-catid"); $.ajax( { type:"GET", url: "/likepost", data:{ post_id: catid }, success: function( data ) { $( '#like'+ catid ).remove(); $( '#message' ).text(data); } }) }); </script> </body> </html> Basically, what we are doing here is - we are making an ajax get request -> /likepost?post_id=<id_of_liked_post>
6. 将模型注册到管理并添加一些帖子:
打开 post/admin.py。
将模型导入到 admin.py。
from .models import Post, Like
注册您的模型:
admin.site.register(Post) admin.site.register(Like)
原文链接:codingdict.net