首页 > 解决方案 > 没有重定向到 Django 中的主页。将 http://127.0.0.1:8000/home/connect/jhvjhb/3 放入 url

问题描述

显示错误和请求的图像

在 url 中输入http://127.0.0.1:8000/home/connect/jhvjhb/3时,url 被定义为采用一些随机字母,最后是主键。它应该重定向到家,但它不工作。我不知道正则表达式。

网址.py

from django.urls import path
from home.views import HomeView
from . import views
app_name = 'home'

urlpatterns = [
    path('', HomeView.as_view(), name="home"),
    path('connect/(?P<operation>.+)/(?P<pk>\d+)/', views.change_friends, name='change_friends')
]   

模型文件.py

from django.db import models
from django.contrib.auth.models import User
# Create your models here.


class Post(models.Model):
    post = models.CharField(max_length=500)
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)


class Friend(models.Model):
    users = models.ManyToManyField(User)
    current_user = models.ForeignKey(User, related_name='owner', null=True,on_delete=models.CASCADE)

    @classmethod
    def make_friend(cls, current_user, new_friend):
        friend, created = cls.objects.get_or_create(
            current_user=current_user    
        )
        friend.users.add(new_friend)

    @classmethod
    def lose_friend(cls, current_user, new_friend):
        friend, created = cls.objects.get_or_create(
            current_user=current_user    
        )
        friend.users.remove(new_friend)

视图.py

from django.views.generic import TemplateView
from django.shortcuts import render, redirect
from django.contrib.auth.models import User
from .forms import HomeForm
from .models import Post

class HomeView(TemplateView):
    template_name = 'home/home.html'

    def get(self, request):
        form = HomeForm()
        posts = Post.objects.all().order_by('-created')
        users = User.objects.exclude(id=request.user.id)

        args = {'form':form, 'posts':posts, 'users':users} 
        return render(request, self.template_name, args)

    def post(self, request):
        form = HomeForm(request.POST)
        if form.is_valid():
            post = form.save(commit=False)
            post.user = request.user
            post.save()
            form = HomeForm()
            return redirect('home:home')

        args = {'form':form, 'text':text}
        return render(request, self.template_name, args)


    def change_friends(request, operation, pk):
        return redirect('home:home')

标签: djangodjango-modelsdjango-views

解决方案


推荐阅读