Django 3.0实战: 仿链家二手房信息查询网(附GitHub源码)

很久没写原创文章了,真对不住大家。今天小编我要带你使用Django开发一个APP,仿链家的二手房信息查询。它只有一个页面,主要功能用于展示二手房信息,并支持访问用户根据关键词或多个筛选条件查询房源信息。是的,你没听错。我们只开发一个页面,只编写一个视图函数,只使用一个模板,然而其实现的筛选查询功能确实非常有用的,可以扩展到其它项目。文末会附上GITHUB源码地址。

我们要实现的最终展示效果如下图所示:

所用到的安装包

Django==3.0.8 # 最新Django版本
django-filter==2.3.0 # 扩展Django的Filter功能

前端使用bootstrap 4。如果你不熟悉django-filter的使用,强烈建议先阅读Django-filter教程详解: 从安装使用到高阶美化分页-大江狗精品

项目开始

先使用pip安装项目所使用到的安装包,然后使用如下命名创建项目(project)和应用(app)。项目名为myhouseproject, app名为house。

django-admin startporject myhouseproject
cd myhouseproject
django-admin startapp house

然后在项目 settings.py 文件的 INSTALLED_APPS 中添加应用名称:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'house',
]

编写模型

进入house文件夹,编写models.py,添加如下代码。Django的ORM会自动根据模型在自带的sqlite数据库中生成数据表。我们的House模型与Community模型是一对多的关系(ForeignKey),因为一个Community(小区)内包含多条House信息。

#house/models.py

from django.db import models
# Create your models here.
class City(models.TextChoices):
    BEIJING = 'bj', '北京'
    SHANGHAI = 'sh', '上海'
    SHENZHEN = 'sz', '深圳'
    GUANGZHOU = 'gz', '广州'
    HANGZHOU = 'hz', '杭州'
class Bedroom(models.TextChoices):
    B1 = '1', '1室1厅'
    B2 = '2', '2室1厅'
    B3 = '3', '3室1厅'
    B4 = '4', '4室2厅'
class Area(models.TextChoices):
    A1 = '1', '<50平米'
    A2 = '2', '50-70平米'
    A3 = '3', '70-90平米'
    A4 = '4', '90-140平米'
    A5 = '5', '>140平米'
class Floor(models.TextChoices):
    LOW = 'l', '低楼层'
    MIDDLE = 'm', '中楼层'
    HIGH = 'h', '高楼层'
class Direction(models.TextChoices):
    EAST = 'e', '东'
    SOUTH = 's', '南'
    WEST = 'w', '西'
    NORTH = 'n', '北'
class Community(models.Model):
    name = models.CharField(max_length=60, verbose_name='小区')
    city = models.CharField(max_length=2, choices=City.choices, verbose_name="城市")
    add_date = models.DateTimeField(auto_now_add=True, verbose_name="发布日期")
    mod_date = models.DateTimeField(auto_now=True, verbose_name="修改日期")


    class Meta:
        verbose_name = "小区"
        verbose_name_plural = "小区"
    def __str__(self):
        return self.name


class House(models.Model):
    description = models.CharField(max_length=108, verbose_name="描述")
    community = models.ForeignKey('Community', on_delete=models.CASCADE, verbose_name="小区")
    bedroom = models.CharField(max_length=1, choices=Bedroom.choices, verbose_name="房型")
    direction = models.CharField(max_length=2, choices=Direction.choices, verbose_name="朝向")
    floor = models.CharField(max_length=1, choices=Floor.choices, verbose_name="楼层")
    area = models.DecimalField(max_digits=8, decimal_places=2, verbose_name="面积(平方米)")
    area_class = models.CharField(max_length=1, null=True, blank=True, choices=Area.choices, verbose_name="面积")
    price = models.DecimalField(max_digits=8, decimal_places=2, verbose_name="价格(万元)")
    add_date = models.DateTimeField(auto_now_add=True, verbose_name="发布日期")
    mod_date = models.DateTimeField(auto_now=True, verbose_name="修改日期")


    class Meta:
        verbose_name = "二手房"
        verbose_name_plural = "二手房"
    def __str__(self):
        return '{}.{}'.format(self.description, self.community)


    def save(self, *args, **kwargs):
        if self.area < 50:
            self.area_class = Area.A1
        elif 50 <= self.area < 70:
            self.area_class = Area.A2
        elif 70 <= self.area < 90:
            self.area_class = Area.A3
        elif 90 <= self.area < 140:
            self.area_class = Area.A4
        else:
            self.area_class = Area.A5
        super().save(*args, **kwargs) 

 现在进入myhouseproject文件夹,输入如下命令创建House模型对应数据表和超级用户了。

python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser

之所以我们要创建超级用户admin是因为我们要通过Django自带的后台admin添加房产信息。Django的后台admin虽然不太美观,但功能强大,使我们可以专注于向用户展示信息。

自定义Admin并添加数据

进入house文件夹,编写admin.py,添加如下代码,将House和Community模型在后台注册。

#house/admin.py

from django.contri
  • 2
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
首家百分百开源房少房产系统站,帮您一站式快速搭建类似58.链家,安居客站平台 房少房产系统,全唯一拥有pc端+手机端内外erp和外运营的中介系统,适用于房产门户和联盟的多个场景, 拥有新房、二手房、出租房、小区、问答等多套系统满足各类型房产企业电商化发展需求 ; 产品特色: 站所有信息和软件系统同步,技术方案成熟稳定,支持各类房产中介业务场景,可以方便的进行站的管理,实现高度的信息化, 帮您一站式快速搭建类似于链家,58,我爱我家,房多多,Q房, 房天下,等站平台,提升了企业品牌形象和服务范围,客户可实现在线的房源查询和发布。 建立自己的运营平台,拥有自主的房产电商平台,不仅能够便捷地接收络订单,还能挖掘更多的潜在客户; 多区域分站平台,系统后台管理员对某区域绑定相对应子域名就能迅速形成一个新的分站系统,快速跨区域扩张自已的业务。 开拓连锁加盟事业,运用系统超强的会员分配权限,可以提供自主运营与加盟运营相结合模式。加盟商的管理权限可以自由分配。 二次开发成其它电商产品,系统源码提供,丰富优秀的源码能支持您迅速二次开发成您所需求的其它产品平台。 房产电商细分门户,根据运营者的需求,可对家新房,二手房、出租、商业地产(商铺与写字档)、楼盘分销等功能模板单独或组合运营。 平台植入广告,吸引客源,增加企业知名度,树立品牌形象,达到互利共赢,专业的络维护交给我们,您只管专心做好平台运营。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值