如何在用户profi中显示用户输入到Django模型中的信息

2024-06-28 19:36:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我是django的新手,我正在做一个项目。这是一个网站,人们可以在那里寻找房子出租。用户将能够创建帐户,搜索要出租的房子,并创建他们想要出租的房子的列表。你知道吗

我创建了一个模型来保存用户想要出租的房子的所有信息。我需要过滤这些信息,并显示每个用户的个人资料清单。我已经在网上搜索过了,但还没有找到解决办法。你知道吗

我真的需要帮助。你知道吗

型号.py

from django.db import models
from django.contrib.auth.models import User
class Myhouses(models.Model):
    Available = 'A'
    Not_Available = 'NA'
    Availability = (
        (Available, 'Available'),
        (Not_Available, 'Not_Available'),
    )
    name_of_accomodation = models.CharField(max_length=200)
    type_of_room = models.CharField(max_length=200)
    house_rent = models.IntegerField()
    availability = models.CharField(max_length=2, choices=Availability, default=Available,)
    location = models.CharField(max_length=200)
    nearest_institution = models.CharField(max_length=200)
    description = models.TextField(blank=True)
    image = models.ImageField(upload_to='profile_image')
    author = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, blank=True, related_name='author')

    def __str__(self):
        return self.name_of_accomodation

视图.py

class ListingByUser(LoginRequiredMixin, generic.ListView): 
    model = Myhouses
    template_name ='houses/ListingByUser.html'
    paginate_by = 10
    def get_queryset(self):
        return Myhouses.objects.filter(author=self.request.user)

网址.py

from django.conf.urls import url, include
from . import views
from django.contrib.auth.models import User


urlpatterns = [
    url(r'^addlisting/$', views.addlisting, name='addlisting'),
    url(r'^mylisting/', views.ListingByUser.as_view(), name='ListingByUser')
]

模板

<ul>
{% for houses in myhouses_list %}
    <li>{{ houses.name_of_accomodation }}</li>

{%endfor %}
</ul>

Tags: ofdjango用户namefrompyimportself
1条回答
网友
1楼 · 发布于 2024-06-28 19:36:45

快速查看一下您的代码,有一件事让我对您的ListingByUser视图印象深刻:您重写了get方法,只设置了一些通常定义为类属性的属性。这也可能会阻止视图从数据库中实际获取模型(通过调用get_queryset方法)并提供正确的响应。你知道吗

编辑

我发现将模板链接到ListingByUser视图呈现的响应也有问题。据我所知,Django视图没有查看变量template_name来获取响应的模板。但它确实调用了一个方法^{},该方法返回以字符串形式给出的模板名称列表。你知道吗

试着这样修改它:

视图.py

class ListingByUser(LoginRequiredMixin, generic.ListView):
    model = Myhouses
    template_name ='myhouses/listing_by_user.html'
    paginate_by = 10

    def get_queryset(self):
        return Myhouses.objects.filter(author=self.request.user)

    def get_template_names(self):
        return [self.template_name]

相关问题 更多 >