Django实践踩坑大全

为了避免重复踩坑,也是为了记录自己的心得,加深对django的理解。于是乎,此篇博文诞生了,欢迎批评指正。博文将列举本人遇到的常见坑,并提供一定的解决办法。本文将持续更新,请各位大佬持续关注,O(∩_∩)O

 1、Django Admin登录时,用户名密码正确,却无法完成正常跳转

现象:前端输入django admin的superuser用户名和密码,我确信用户名,密码正确,可就是没法完成登录?气的直哆嗦,虽然后来解决了。发个感慨:有的时候,功能莫名奇妙实现了,没有理解,真的是给自己埋坑了。

一般我们会选择两种方式做认证,一种是使用自定义的认证后端,一种是使用django自带的认证后端;我们的django admin登录时,同样会根据AUTHENTICATION_BACKENDS去做认证的事情。如果不使用自定义的认证后端,直接使用django自带的即可,具体配置如下:

AUTHENTICATION_BACKENDS = (
    'comm.ssoauth_backend.SsoAuthBackend',
    'comm.admin_backend.AdminAuthBackend',
    # 'django.contrib.auth.backends.ModelBackend'
)

上述注释的部分为Django自带的认证后端,把这玩意加上;然后在用户名,密码正确的前提下,就可以登录了。上述非注释的部分为自定义的认证后端,但不管是哪种,只要能返回特定的user对象,anthentication(认证)就是通过的,Django Admin就会认为登录成功了。而自定义认证后端,官网也给了案例代码,具体可以看看我的另一篇博文,重点讲解AUTHENTICATION_BACKENDS;好,回到正题,案例代码是这么写的:

class AdminAuthBackend(object):
    """
    Django Admin Auth
    """
    def authenticate(self, request, username=None, password=None):
        login_valid = (settings.ADMIN_LOGIN == username)
        pwd_valid = check_password(password, settings.ADMIN_PASSWORD)
        if login_valid and pwd_valid:
            try:
                user = User.objects.get(username=username)
            except User.DoesNotExist:
                # Create a new user. There's no need to set a password
                # because only the password from settings.py is checked.
                user = User(username=username)
                user.is_staff = True
                user.is_superuser = True
                user.save()
            return user
        return None

    def get_user(self, user_id):
        try:
            return User.objects.get(pk=user_id)
        except User.DoesNotExist:
            return None

这代码厉害了,仔细看,你会发现,只有当用户名,密码和settings.py文件中,ADMIN_LOGIN指定的用户名和ADMIN_PASSWORD指定的密码才可以登录成功哦,否则登录不会成功。

<think>好的,用户想要了解Python的实践项目。我需要先确定用户的需求是什么。可能他们刚开始学Python,想找一些项目来练手,或者是已经有一定基础,想找更复杂的项目提升技能。也有可能他们需要项目来丰富简历,或者是为了解决实际问题。 首先,我应该考虑同难易程度的项目,覆盖同领域,比如数据分析、Web开发、自动化脚本、机器学习等。这样无论用户的水平如何,都能找到合适的项目。同时,要确保这些项目能帮助用户巩固知识,提高实际应用能力。 接下来,我需要列举一些常见的Python实践项目,并分类说明。比如入门级的项目可以是简单的计算器、待办事项列表,这些帮助熟悉基础语法。中级项目可以涉及Web框架如Django或Flask,或者数据分析的Pandas和Matplotlib。高级项目可能包括机器学习模型、深度学习应用,或者更复杂的自动化工具。 还要注意每个项目的技术要点,比如使用哪些库,实现什么功能,这样用户能清楚需要学习哪些知识。比如在数据可视化项目中,提到使用Pandas处理数据,Matplotlib或Seaborn绘图,这样用户就知道需要掌握这些库。 另外,用户可能需要项目的实际应用场景,这样他们能理解项目的意义。比如网络爬虫可以用于数据收集,自动化脚本能提高效率,机器学习项目可以解决预测问题。 还要考虑推荐一些资源,比如GitHub、Kaggle,或者在线课程,帮助用户找到项目灵感和学习资料。同时,强调实践的重要性,比如从简单开始,逐步增加难度,参与开源项目等。 需要避免使用专业术语过多,保持解释清晰易懂。结构上分点列出,入门、中级、高级项目,每个类别下有几个例子,每个例子简要说明技术栈和实现目标。这样用户能一目了然地找到适合自己的项目。 最后,检查是否符合用户可见的系统指令,比如数学公式的格式是否正确,但这次内容可能太涉及数学,过要注意如果有代码或公式的话要正确使用格式。整体用中文,结构清晰,分步骤介绍,确保回答真实可靠。</think>以下是一些适合同阶段的Python实践项目推荐,分阶段介绍并附技术要点,帮助你通过实践提升编程能力: --- ### **一、入门级项目(适合掌握基础语法后练习)** 1. **简易计算器** - 目标:实现加减乘除、括号优先级运算 - 技术栈:`tkinter`(图形界面)、条件判断、异常处理 - 扩展:添加科学计算功能(如平方根、幂运算) 2. **待办事项管理工具** - 目标:命令行操作增删改查任务 - 技术栈:`json`文件存储、字典/列表操作 - 扩展:添加截止日期提醒功能 3. **文本处理工具** - 目标:统计文本词频、替换敏感词 - 技术栈:`re`模块(正则表达式)、文件读写 - 示例:分析小说《西游记》高频词汇 --- ### **二、中级项目(结合常用库与框架)** 1. **Web应用开发** - **个人博客系统** - 技术栈:`Flask`/`Django`框架、`SQLite`数据库 - 功能:用户注册登录、文章发布、评论互动 - **电商平台Demo** - 技术栈:`REST API`设计、`JWT`鉴权、`Redis`缓存 - 扩展:集成支付宝/微信支付沙箱环境 2. **数据分析与可视化** - **电影票房分析** - 数据集:Kaggle的TMDB 5000 Movies - 技术栈:`Pandas`清洗数据、`Matplotlib`/`Plotly`绘图 - 目标:分析高票房电影特征(类型、导演、评分) - **股票价格预测** - 技术栈:`yfinance`获取数据、`ARIMA`模型预测 3. **自动化脚本** - **批量文件重命名工具** - 技术栈:`os`模块遍历目录、正则表达式匹配规则 - **邮件自动发送系统** - 技术栈:`smtplib`配置SMTP服务、定时任务(`schedule`库) --- ### **三、进阶项目(综合应用与算法)** 1. **机器学习模型** - **手写数字识别** - 数据集:MNIST - 技术栈:`scikit-learn`的SVM模型、`TensorFlow`构建CNN网络 - **情感分析系统** - 技术栈:`NLTK`/`spaCy`处理文本、`BERT`预训练模型 2. **网络爬虫与数据挖掘** - **豆瓣电影Top250信息抓取** - 技术栈:`Requests`+`BeautifulSoup`解析HTML、反爬策略 - 输出:CSV文件存储电影名称/评分/短评 - **社交媒体舆情监控** - 技术栈:`Scrapy`框架、`MongoDB`存储非结构化数据 3. **游戏开发** - **贪吃蛇小游戏** - 技术栈:`Pygame`库处理图形与键盘事件 - **基于强化学习的AI对战** - 示例:训练AI玩Flappy Bird - 技术栈:`OpenAI Gym`环境、`Q-learning`算法 --- ### **四、项目实践建议** 1. **从简单开始**:先完成核心功能,再逐步优化扩展 2. **善用工具链**: - 版本控制:`Git`+GitHub - 代码质量:`pylint`检查规范、`unittest`编写测试用例 3. **参与开源**:通过GitHub贡献代码或复现经典项目(如Requests源码分析) 4. **结合兴趣领域**:如量化交易、物联网(Raspberry Pi控制)、计算机视觉等 --- ### **五、学习资源推荐** - **数据集平台**:Kaggle、UCI Machine Learning Repository - **项目灵感**:GitHub Trending、Real Python教程 - **在线课程**:Coursera《Python for Everybody》、极客时间《Python核心技术与实战》 通过实践项目,仅能巩固Python语法,还能掌握工程化开发流程和解决问题的能力。建议每完成一个项目撰写技术总结文档,记录设计思路与经验。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值