Рубрики

Обработка запроса Ajax в Django

Вступление

Из этого туториала Вы узнаете, как выполнить ajax-запрос в веб-фреймворке Django. Мы создадим простое приложение на основе пост-лайков в качестве примера.

глоссарий

  • Инициализация проекта
  • Создавать модели
  • Создать виды
  • Написать URL
  • Выполните запрос с помощью Jquery AJax.
  • Зарегистрируйте модели для администратора и добавьте несколько постов.

Реализация:

1. Инициируйте проект Django. Здесь я предполагаю, что вы завершили установку Django.

  • Для создания проекта Django выполните:
    $ django-admin startproject django_example
    
  • После создания проекта нам нужно создать приложение django. Чтобы создать приложение, скажите «пост», выполните следующее:
    $ 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.user)
  • Затем в файле models.py создайте похожую таблицу. Чтобы создать похожую таблицу, вам нужно написать:
    class Like(models.Model):
        post = models.ForeignKey(Post)
  • Сделайте шаг миграции и миграции:
    $ python manage.py makemigrations
    $ python manage.py migrate
    

После выполнения этих шагов у нас есть таблицы базы данных, готовые к использованию.

3. Создать представления:

Чтобы создать представления, нам нужно перейти в почтовый каталог и открыть views.py

  • Во-первых, импортируйте ранее созданные модели и 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 })
  • Создайте лайк пост, чтобы полюбить пост. Это представление будет вызвано, когда мы нажмем кнопку «Мне нравится». Пример кода:
    def likePost(request):
        if request.method == 'GET':
               post_id = request.GET['post_id']
               likedpost = Post.obejcts.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/', include(admin.site.urls)),
     url(r'^', include('post.urls')),   # To make post app available at /
   ]

Чтобы создать URL, создайте файл post / urls.py. Ваш пост / 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. Зарегистрировать модели для администратора и добавить несколько постов:

  • Откройте пост / admin.py.
  • Импорт моделей в admin.py.
from .models import Post, Like
  • Зарегистрируйте свои модели:
admin.site.register(Post)
admin.site.register(Like)

Теперь добавьте несколько сообщений, используя административный портал django по умолчанию. Посетите http: // localhost: 8000 /, чтобы просматривать и ставить лайки. Я также добавил этот пример приложения в свой github, который вы можете использовать для справки.

Ссылки:

Счастливого Джангоинга !!!

Этот блог написан Аншул Сингхал. Если вы также хотите продемонстрировать свой блог здесь, пожалуйста, смотрите GBlog для записи гостевого блога на GeeksforGeeks.

Рекомендуемые посты:

Обработка запроса Ajax в Django

0.00 (0%) 0 votes