Добавление входа в систему в django с помощью rest API в шаблоне

Как поживаете? Я совсем новичок в Django и я работаю над проектом, который предназначен для управления задачами. Каждый владелец задачи может редактировать или обновлять, но никто другой не может. Я написал функцию входа, которая работает правильно, но теперь я хочу переписать ее вместе с остальным. Я написал navbar, в котором при нажатии на кнопку login (в нем) вы увидите login.html. Как я могу написать логин в rest и связать его с моим login.html? Также у меня вопрос, как я могу защитить метод обновления и удаления, чтобы только админ и владелец могли их делать? Заранее спасибо

Мой логин.html

{%extends 'base.html' %}
{% block content %}
<body>
 <div id="container">
   <div></div>
  <div class="container">
    <h1>Login</h1>
    <p>Please fill in this form to login.</p>
    <hr>
      <form  method="post">
                  {% csrf_token %}
          <input type="hidden" name="next" value="{{ request.path }}">

            <label for="username"><b>Userame</b></label>
            <input type="text" placeholder="Enter Username" name="username" required>

            <label for="psw"><b>Password</b></label>
            <input type="password" placeholder="Enter Password" name="password" required>

            <div class="row justify-content-center ">
              <button type="submit" class="signupbtn btn btn-primary" name="btn">Login</button>
            </div>
      </form>

     {% for message in messages %}
     <div class="alert alert-danger d-flex align-items-center" role="alert">
          <svg class="bi flex-shrink-0 me-2" width="24" height="24" role="img" aria-label="Danger:"><use xlink:href="#exclamation-triangle-fill"/></svg>
          <div>
            {{ message }}
          </div>
    </div>
     {% endfor %}   
  </div>
<div></div>
</div>
</body>
</html>
{% endblock %}

Это мой корень URLs.py

urlpatterns = [
    path('admin/', admin.site.urls),
    path('',include('task.urls')),
    path('api-auth/', include('rest_framework.urls'))]

Это task/urls.py

app_name='task'
urlpatterns = [
    path('', views.TaskListView.as_view(), name='all'),
    path('task/<int:pk>/', views.TaskDetailView.as_view(), name='detail'),    
    path("accounts/login/", views.login, name='login'),
    path("accounts/logout/", views.logout, name='logout'),
]

Это мой предыдущий логин, который работает

def login(req):
    if not req.user.is_authenticated:
        if req.method=='POST':
            username=req.POST['username']
            password=req.POST['password']
            user=auth.authenticate(username=username,password=password)
            if user is not None:
                auth.login(req,user)
                next = req.POST.get('next', '/')
                print("----",next)
                return HttpResponseRedirect(next)
            else:
                messages.info(req,"Entry not valid !")
                return redirect("task:login")

        else:
            return render(req, "login.html")
    else:
        return redirect("task:all")

А это моя модель

class Task(models.Model):
    title=models.CharField(max_length=250)
    text=models.TextField()
    user=models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, null=False)
    status=models.ForeignKey('Status',on_delete=models.SET_NULL,null=True)
    startDate=models.DateTimeField(auto_now_add=True)
    endDate=models.DateField(null=True)

    def __str__(self):
        return self.title

class Status(models.Model):
    name=models.CharField(max_length=250)

    def __str__(self):
        return self.name
Вернуться на верх