📜  在 Django 中处理 Ajax 请求

📅  最后修改于: 2021-10-21 05:53:36             🧑  作者: Mango

aj1

介绍

本教程介绍了如何在 Django Web 框架中执行 ajax 请求。作为示例的一部分,我们将创建一个简单的点赞应用程序。

词汇表

  • 项目初始化
  • 创建模型
  • 创建视图
  • 写网址
  • 使用 Jquery AJax 执行请求。
  • 将模型注册到管理员并添加一些帖子。

执行:

1. 启动 Django 项目——这里我假设你已经完成了 Django 安装。

  • 要创建 Django 项目,请执行:
    $ django-admin startproject django_example
    
  • 创建项目后,我们需要创建一个 django 应用程序。要创建一个应用程序,说“post”,请执行以下操作:
    $ cd django_example
    $ python manage.py startapp post
    
  • 转到 django_example/settings.py 添加 post 应用
  • 现在您将拥有如下文件:

目录结构

2. 创建模型:要创建模型,请转到 post 目录并打开 models.py 。

  • 在models.py中,首先创建post表。要创建帖子表,您需要编写:
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)
  • 进行迁移和迁移步骤:
    $ python manage.py makemigrations
    $ python manage.py migrate
    

完成这些步骤后,我们就可以使用我们的数据库表了。

3. 创建视图:

要创建视图,我们需要转到 post 目录并打开 views.py

  • 一、导入之前创建的Models和HTTPresponse
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 })
  • 创建 likePost 视图以喜欢帖子。当我们点击“喜欢按钮”时,将调用此视图。代码示例:
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。代码示例:



    Like Post App


    

{% for post in posts %}

{{ forloop.counter }}) {{ post.post_heading }}

{{ post.post_text }}

{% endfor %} Basically, what we are doing here is - we are making an ajax get request -> /likepost?post_id=

6. 将模型注册到管理员并添加一些帖子:

  • 打开 post/admin.py。
  • 将模型导入 admin.py。
from .models import Post, Like
  • 注册您的模型:
admin.site.register(Post)
admin.site.register(Like)

现在使用 django 默认管理门户添加一些帖子。访问 http://localhost:8000/ 查看和喜欢帖子。我还将这个示例应用程序添加到我的 github 中,您可以参考。

参考:

  • https://docs.djangoproject.com/en/1.9/intro/tutorial01/

Djangoing 快乐!!!

本博客由 Anshul Singhal 撰写。如果您还想在这里展示您的博客,请参阅 GBlog,了解 GeeksforGeeks 上的客座博客写作。