当前位置:首页 > 文章列表 > 文章 > 前端 > 反思我的旅程:构建初学者房地产列表全栈应用程序

反思我的旅程:构建初学者房地产列表全栈应用程序

来源:dev.to 2024-09-14 22:06:55 0浏览 收藏

哈喽!今天心血来潮给大家带来了《反思我的旅程:构建初学者房地产列表全栈应用程序》,想必大家应该对文章都不陌生吧,那么阅读本文就都不会很困难,以下内容主要涉及到,若是你正在学习文章,千万别错过这篇文章~希望能帮助到你!

反思我的旅程:构建初学者房地产列表全栈应用程序

当我第一次开始学习 python 时,我不知道这段旅程会带我走向何方。我记得深入研究 python 教程,努力学习循环、函数和面向对象编程等基本概念。快进到今天,我使用 flask 后端和 react 前端的组合构建了一个全栈房地产列表应用程序。这个项目不仅是一个挑战,也是一次令人难以置信的学习经历,帮助我成长为一名开发人员。让我带您完成整个旅程,并重点介绍我在构建此应用程序时学到的一些关键方面。

开始:学习 python 基础知识

当我开始使用 python 时,我知道它是一种多功能且适合初学者的语言。然而,像大多数初学者一样,我也面临着一些挑战。理解语法、学习如何调试以及熟悉 python 的库都是我必须克服的障碍。我花了无数的时间在一些小项目上,比如一个简单的计算器和一个待办事项列表 cli 应用程序,以掌握基础知识。

当我开始开发我的房地产列表应用程序时,这些基础练习得到了回报。 python 基础知识对于编写干净、高效的代码至关重要,尤其是在为应用程序创建模型和处理数据时。

我首先使用 flask(一个轻量级 web 框架)构建后端。 flask 使用起来很简单,但也需要对 python 基础知识有很好的了解。我的初始步骤包括设置虚拟环境和构建项目,确保安装了所有必要的库,例如用于 orm(对象关系映射)的 sqlalchemy,它简化了数据库交互。

使用 flask 构建后端

房地产列表应用程序的后端旨在处理用户身份验证、房产列表、应用程序和愿望清单。这要求我创建多个模型,包括用户、属性和应用程序,每个模型都有自己的一组字段和关系。

这是我如何使用 sqlalchemy 定义用户模型的片段:

from flask_sqlalchemy import sqlalchemy

db = sqlalchemy()

class user(db.model):
    __tablename__ = 'users'

    id = db.column(db.integer, primary_key=true)
    username = db.column(db.string(50), unique=true, nullable=false)
    email = db.column(db.string(100), unique=true, nullable=false)
    password = db.column(db.string(100), nullable=false)
    # relationships
    properties = db.relationship('property', backref='owner', lazy=true)

此代码片段显示了用户模型的创建,其中包含用户名、电子邮件和密码等字段。我还与 property 模型建立了一对多关系,这对于将用户(代理)链接到他们列出的属性至关重要。

使用 react 应对前端挑战

虽然由于我对 python 的熟悉,后端大部分都很简单,但前端却提出了一个全新的挑战。我选择 react 是因为它基于组件的架构和充满活力的生态系统。然而,学习 react 意味着深入研究 javascript——一种我不太熟悉的语言。

我首先为应用程序的不同部分创建可重用的组件,例如属性列表页面、用户注册页面和应用程序管理页面。例如,propertyagent 组件允许代理创建、编辑和删除房产列表:

import react, { usestate, useeffect } from 'react';
import axios from 'axios';
import './propertyagent.css';

const propertiesagent = () => {
    const [properties, setproperties] = usestate([]);
    const [newproperty, setnewproperty] = usestate({ title: '', description: '', price: '', location: '', property_type: 'apartment' });
    const [error, seterror] = usestate('');
    const [success, setsuccess] = usestate('');

    useeffect(() => {
        fetchproperties();
    }, []);

    const fetchproperties = async () => {
        try {
            const response = await axios.get('/properties', {
                headers: { authorization: `bearer ${localstorage.getitem('token')}` }
            });
            setproperties(response.data || []);
        } catch (error) {
            seterror('error fetching properties');
        }
    };

    const handlecreateproperty = async (event) => {
        event.preventdefault();
        try {
            await axios.post('/properties', newproperty, {
                headers: { authorization: `bearer ${localstorage.getitem('token')}` }
            });
            setsuccess('property created successfully!');
            fetchproperties();
        } catch (error) {
            seterror('error creating property');
        }
    };

    return (
        
{/* jsx for rendering the properties and the form to create a new property */}
); }; export default propertiesagent;

此代码片段说明了如何使用 react hooks(usestate 和 useeffect)来管理状态和处理副作用,例如从后端 api 获取数据。

有用的技术方面:了解 javascript 的异步特性

我在使用 react 和 javascript 时学到的最重要的方面之一是如何处理异步操作。 javascript 的非阻塞、异步特性对于初学者来说可能有点令人畏惧,尤其是在处理 api 调用时。

例如,从后端获取数据需要使用async/await语法的异步函数:

const fetchProperties = async () => {
    try {
        const response = await axios.get('/properties', {
            headers: { Authorization: `Bearer ${localStorage.getItem('token')}` }
        });
        setProperties(response.data || []);
    } catch (error) {
        setError('Error fetching properties');
    }
};

与使用 promise 相比,使用 async/await 使代码更具可读性且更易于调试。它还确保在执行任何依赖于该数据的操作之前获取数据,这对于维持无缝的用户体验至关重要。

回顾:从 python 基础到全栈开发的成长

回顾过去,从学习 python 基础知识到构建全栈应用程序的旅程非常有意义。我不仅提高了编码技能,还获得了使用不同技术和框架的宝贵经验。

构建这个房地产列表应用程序教会了我在编程基础知识方面打下坚实基础的重要性。它还强化了软件开发中学习永无止境的理念。总是有一个新的框架、库或工具需要掌握,每个项目都会带来自己独特的挑战。

此旅程中最令人满意的方面之一就是看到应用程序变得栩栩如生。从设置后端到处理用户身份验证,再到构建动态、响应式的前端组件,每一步都是一个学习的机会。

结论

总之,开发这款房地产列表应用程序是一次宝贵的经历,它强调了坚持不懈、持续学习和以开放的态度应对新挑战的重要性。随着我作为一名开发人员的不断成长,我对未来以及我将在此过程中获得的新技能和知识感到兴奋。

如果您刚刚开始,我的建议是继续编码,继续学习,并且不要害怕承担那些让您走出舒适区的项目。你修复的每一个错误、你学到的每一项新技术、你完成的每一个项目都离成为一名熟练的开发人员更近了一步。

https://github.com/migsldev/real_estate_listing_app

终于介绍完啦!小伙伴们,这篇关于《反思我的旅程:构建初学者房地产列表全栈应用程序》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布文章相关知识,快来关注吧!

版本声明
本文转载于:dev.to 如有侵犯,请联系study_golang@163.com删除
Java 函数式编程对大型代码库的维护和可扩展性有哪些影响?Java 函数式编程对大型代码库的维护和可扩展性有哪些影响?
上一篇
Java 函数式编程对大型代码库的维护和可扩展性有哪些影响?
PHP 函数通过引用传递参数时如何避免意外修改?
下一篇
PHP 函数通过引用传递参数时如何避免意外修改?
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    542次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    508次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    497次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    484次学习
查看更多
AI推荐
  • AI Make Song:零门槛AI音乐创作平台,助你轻松制作个性化音乐
    AI Make Song
    AI Make Song是一款革命性的AI音乐生成平台,提供文本和歌词转音乐的双模式输入,支持多语言及商业友好版权体系。无论你是音乐爱好者、内容创作者还是广告从业者,都能在这里实现“用文字创造音乐”的梦想。平台已生成超百万首原创音乐,覆盖全球20个国家,用户满意度高达95%。
    16次使用
  • SongGenerator.io:零门槛AI音乐生成器,快速创作高质量音乐
    SongGenerator
    探索SongGenerator.io,零门槛、全免费的AI音乐生成器。无需注册,通过简单文本输入即可生成多风格音乐,适用于内容创作者、音乐爱好者和教育工作者。日均生成量超10万次,全球50国家用户信赖。
    12次使用
  •  BeArt AI换脸:免费在线工具,轻松实现照片、视频、GIF换脸
    BeArt AI换脸
    探索BeArt AI换脸工具,免费在线使用,无需下载软件,即可对照片、视频和GIF进行高质量换脸。体验快速、流畅、无水印的换脸效果,适用于娱乐创作、影视制作、广告营销等多种场景。
    12次使用
  • SEO标题协启动:AI驱动的智能对话与内容生成平台 - 提升创作效率
    协启动
    SEO摘要协启动(XieQiDong Chatbot)是由深圳协启动传媒有限公司运营的AI智能服务平台,提供多模型支持的对话服务、文档处理和图像生成工具,旨在提升用户内容创作与信息处理效率。平台支持订阅制付费,适合个人及企业用户,满足日常聊天、文案生成、学习辅助等需求。
    16次使用
  • Brev AI:零注册门槛的全功能免费AI音乐创作平台
    Brev AI
    探索Brev AI,一个无需注册即可免费使用的AI音乐创作平台,提供多功能工具如音乐生成、去人声、歌词创作等,适用于内容创作、商业配乐和个人创作,满足您的音乐需求。
    17次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码