Python 我想基于网页的存在使用if语句

Python 我想基于网页的存在使用if语句,python,django,web,Python,Django,Web,所以基本上我有一个复杂的场景。我目前正在使用Django建立一个网站,我目前已经开发了两个应用程序。两个应用程序的字段几乎相同。不过,我想重点关注的领域是信息领域(他们都有这个领域,我在维基百科模型的帮助下自动生成了这个领域) 因此,这里的情况是,我想在html中创建一个if和else语句,如果我超链接到的页面存在,它将转到处理DetailView的链接,但如果它不存在,我将重定向到create视图 我还应该注意到,这两个应用程序的名称通过外键链接,但当我尝试使用相同的名称打开信息链接时,它们给

所以基本上我有一个复杂的场景。我目前正在使用Django建立一个网站,我目前已经开发了两个应用程序。两个应用程序的字段几乎相同。不过,我想重点关注的领域是信息领域(他们都有这个领域,我在维基百科模型的帮助下自动生成了这个领域) 因此,这里的情况是,我想在html中创建一个if和else语句,如果我超链接到的页面存在,它将转到处理DetailView的链接,但如果它不存在,我将重定向到create视图 我还应该注意到,这两个应用程序的名称通过外键链接,但当我尝试使用相同的名称打开信息链接时,它们给了我不同的PK

我觉得我没有很好地解释我的问题,但我希望有人能理解我的意思

更新

好的,我使用

    def get(self, request, *args, **kwargs):
    try:
        self.object = self.get_object()
    except Http404:

        return redirect('/create/')
    context = self.get_context_data(object=self.object)
    return self.render_to_response(context)
但是我不知道如何使用我创建的CreateView功能来代替我放置的链接

这是Html的详细视图

{%extends "home.html"%}
{%block head_title%} {{block.super}}{%endblock head_title%}
{% block content%}
<!-- verify authentication -->
{% if request.user.is_authenticated%}

<h3><a href="{%url 'InfoPedia:UpdateView' object.id %}">{{object.title}}</a></h3><br/>


{% endif %}
<ul type="disc">
<div class="container">

<li><b>Artist: </b>{{object.Summary}}</li>
<li><b>Genre: </b>{{object.Genre}}</li>
<li><b>Bio: </b><br>{{object.Bio}}</li>
<a href ="/Blog/{{object.slug}}/edit">EDIT</a>
</div>
</ul>
{%endif%}
{% endblock %}

另一种方法是,不必检查HTML中的if/else,只需创建指向
DetailView
URL的所有链接即可


然后,在DetailView的
get()
处理程序中,对对象执行queryset查找。如果未找到任何对象,则不显示
DetailView
HTML,而是将该对象的
CreateView
返回给用户a(即临时重定向)。因此,所有if/else逻辑都在视图函数或类中,而不是HTML中。

我使用类InfoPedia\u DetailView(DetailView):def get\u queryset(self):if self.kwargs.get(“id”):return InfoPedia.objects.filter(id=self.request.id)完成了第一部分但是我不知道如何使用302重定向返回到create视图。我的创建视图类名是InfoPedia\u CreateView
from django.db import models
from django.conf import settings
from Blog.models import MainPage
from django.urls.base import reverse
from Blog.Retrieve import retriever
from django.db.models.signals import pre_save,post_save
import InfoPedia


class InfoPedia(models.Model):

    user    =models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE)
    Name        =models.ForeignKey(MainPage,on_delete=models.CASCADE)
    Location      =models.CharField(max_length= 50,null=True,blank=True)
    Information        =models.TextField(null=True,blank=True)
    TrackListing=models.TextField(null=True,blank=True)
    Published=models.BooleanField(default=True)
    Timestamp=models.DateTimeField(auto_now=True)
    Updated=models.DateTimeField(auto_now=True)


    def get_absolute_url(self):
#         return f"/Blog/{self.slug}"
        return reverse('InfoPedia:DetailView', kwargs={"pk":self.pk})

    class Meta:
        ordering=["-Updated","-Timestamp"] #orranges in order of updated

    def get_tracklist(self):
        return self.TrackListing.split(",")

def Information_create_pre_save( instance, sender, **kwargs):
        instance.Information=retriever(instance.Name)


def rl_post_save_reciever(sender, instance,created,*args,**kwargs):
        print("saved")
        print(instance.Timestamp)  


pre_save.connect(Information_create_pre_save, sender=InfoPedia)  

post_save.connect(rl_post_save_reciever, sender=InfoPedia)