PyCharm搭建Django项目并完成注册登录功能

写在前面:

在查django的教程中,竟然没有一个特别好的用IDE搭建项目并写增删改查的例子,那就只能自己写了。
作为一个java程序员,学习python和django的过程中,不可避免的与java和spring作对比,这篇文章也是希望能给一些做过java web项目的同学一个入门demo,但我也是新学,很多不懂,做出来的demo只保证能跑,并不保证代码质量。

利用PyCharm搭建一个Django项目

打开PyCharm,File->New Project
在这里插入图片描述
这里唠叨几句,不想看的可以直接跳过。
由于虚拟环境互相隔离,所以要下载django,打开的速度不会很快,而且django确实很重,里面集成了有ORM框架和数据库,按我的理解一个django == n*(SSH + database),也就是说一个django可以有好多个SSM项目还继承了数据库,但又不太像Spring Cloud这种微服务框架,很难比喻,大家可以自己理解一下。
新建以后的目录结构
在这里插入图片描述
在django中新建一个项目,下面打开Terminal,会自动定位在虚拟环境的路径下,执行命令

python manage.py startapp login

如图所示,其中 login 是新建的项目名,可以改成自己的,由于我们要做一个登录功能,我就叫它 login
在这里插入图片描述
创建完以后,目录结构会多一个login的文件夹,如图所示
在这里插入图片描述
这些标记是基于我对spring的理解标注的,并不准确,至于service层,就当controller和service没分割吧,到时候放到views里面吧。
在settings.py中添加我们的项目,其余的是默认的,这里直接简写我们的项目名字就好
在这里插入图片描述
顺便我们把语言和时区改一下,同样在settings.py中,找到LANGUAGE_CODE和TIME_ZONE
在这里插入图片描述
然后是配置数据库,之前查的很多博客就用自带的SQLite,这当然不行,要换成我们最爱的mysql不是吗,这里坑炒鸡多,请跟着我一起踩坑
继续在settings.py中,找到DATABASES,修改以下配置

import pymysql         # 一定要添加这两行!
pymysql.install_as_MySQLdb()
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',   # 数据库引擎
        'NAME': 'pythontest',  # 数据库名,先前创建的
        'USER': 'root',     # 用户名,可以自己创建用户
        'PASSWORD': '123456',  # 密码
        'HOST': '127.0.0.1',  # mysql服务所在的主机ip
        'PORT': '3306',         # mysql服务端口
    }
}

如果import pymysql报错,说明你还没有安装这个包,在terminal中用pip安装,安装以后就应该不报错了

pip install pymysql

如图所示
在这里插入图片描述
另外数据库要自己去建,这就不截图了,用navicat新建一个库就可以了,demo搞个本机测试库就好了
我们暂时不用新建任何表,因为后面django会帮我们做,这和mybatis generator生成类是相反的,以前做java开发我们通常用逆向工程生成类,但django项目我们是反过来用 python 类生成我们数据库的表。
所以接下来,我们要在models.py编写我们User类
在这里插入图片描述

from django.db import models

# Create your models here.

class User(models.Model):
    user_name = models.CharField(max_length=16)
    password = models.CharField(max_length=16)
    age = models.IntegerField()
    create_time = models.DateField(auto_now_add=True)
    update_time = models.DateField(auto_now=True)
    enable = models.BooleanField(default=True)

然后我们在Terminal中运行

python manage.py makemigrations login

不出意外,应该会报错,点击最近的报错地方,我们要进行一些修改
在这里插入图片描述
点击后会自动定位到报错的位置,我们将 “ if ” 这两句注释掉,如图所示
在这里插入图片描述
第一次修改可能需要确认一下,然后再在terminal中运行一下指令,你会发现还是报错
在这里插入图片描述
同样点击最近的报错信息,定位到报错位置,同样将 “ if ” 这两句注释掉,如图所示
在这里插入图片描述
现在我们就可以执行命令了,再写一次

python manage.py makemigrations login

通过运行makemigrations命令,目录migration下会生成一个0001_initial.py的文件。
然后继续在terminal中执行指令

python manage.py migrate

django会根据你的migration生成数据库,现在打开数据库,就能看到生成的表了,除了你自己的表,还有一些系统自带的表
在这里插入图片描述
这样项目就搭建完成了,数据库也是集成了我们的mysql,此时你可以直接点击右上角的运行按钮,也可以在控制台输入启动命令

python manage.py runserver

这时控制台会输出地址 http://127.0.0.1:8000/
你也可以指定端口号

python manage.py runserver 8080

点一下就在浏览器中打开web项目了

访问流程

按照Spring的流程应该是

html->Controller->Service->Mapper->数据库

django的访问流程应该是

html->urls->views->数据库

这里类比一下:urls相当于spring controller中的@RequestMapping,是一个路由的作用,路由到相应的views里,views里面相当于一点controller,和大部分的业务层,其实也可以进行进一步分割,这里功能比较简单就不分割了。前面说过django是自带orm框架,基本上接触不到sql语句,对于简单的CRUD还是挺好用的,但对于复杂业务,我其实觉得还是自己写sql会好一点,这东西见仁见智,不好说。

上代码

在template中新建regist.html,login.html,userinfo.html分别作为注册页、登录页、用户信息页
在这里插入图片描述
regist.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>注册页</title>
</head>
<body>
<h1>注册</h1>
    <form action="/userRegist/" method="post">
        <div><input name="user_name" type="text" placeholder="账户名" required></div>
        <div><input name="password" type="password" placeholder="密码" required></div>
        <div><input name="age" type="text" placeholder="年龄" required></div>
        <div><button>注册</button></div>
    </form>
</body>
</html>

login.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录页</title>
</head>
<body>
<body>
<h1>登录</h1>
    <form action="/userLogin/" method="post">
        <div><input name="user_name" type="text" placeholder="账户名" required></div>
        <div><input name="password" type="password" placeholder="密码" required></div>
        <div><button>登录</button></div>
    </form>
</body>

</body>
</html>

userinfo.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>用户中心</title>
</head>
<body>
<h1>用户信息</h1>
<div>id:{{ user.id }}</div>
<div>用户名:{{ user.user_name }}</div>
<div>年龄:{{ user.age }}</div>
<div>创建时间:{{ user.create_time }}</div>
</body>
</html>

urls:

from django.contrib import admin
from django.urls import path
from login import views

urlpatterns = [
	#自带的路由,相当于输入“http://127.0.0.1:8000/admin/”
    path('admin/', admin.site.urls),
    #访问注册界面 http://127.0.0.1:8000/regist/,会执行views中的regist方法,下一个相同的道理
    path('regist/',views.regist),
    path('login/',views.login),
    #访问注册界面 
    # http://127.0.0.1:8000/userRegist/,会执行views中Usercontrller的regist方法,下一个相同的道理
    path('userRegist/',views.UserController.userRegist),
    path('userLogin/',views.UserController.userLogin),
    # http://127.0.0.1:8000/userinfo/{这里需要一个整形参数,参数命名为id}/,这样的url会执行views中Usercontrller的userInfo方法,
    path('userinfo/<int:id>',views.UserController.userInfo)
]

views

from django.shortcuts import render
from .models import User
from django.shortcuts import HttpResponse
# Create your views here.
# 这两个是普通路由,执行这个方法就会直接到到相应的模板中,写成了函数形式
def regist(request):
    return render(request,"login/regist.html")

def login(requst):
    return render(requst,"login/login.html")
#下面三个都和用户有关,封装成UserController这个类,
class UserController:
    def userLogin(request):
        if request.method == 'POST':
            user_name = request.POST.get("user_name")
            password = request.POST.get("password")
            user = User.objects.get(user_name=user_name)
            if user.password != password :
                return HttpResponse("密码错误")
        return render(request,"login/userinfo.html",{'user':user})

    def userRegist(request):
        if request.method == 'POST':
            user_name = request.POST.get("user_name")
            password = request.POST.get("password")
            age = request.POST.get("age")
            User.objects.create(user_name=user_name, password=password, age=age)
        return render(request, "login/login.html")

    def userInfo(request,id):
        user = User.objects.get(id=id)
        return render(request, "login/userinfo.html", {'user': user})

我就不解释访问到页面的简单路由了,看一下注释基本都能懂,主要说一下登录的逻辑吧
首先登录是用表单提交
在这里插入图片描述
用post方式访问/userLogin/,然后到urls看一下对应关系
在这里插入图片描述
会执行views下UserController的userLogin方法,我们看一下这个方法
在这里插入图片描述
我特意截图了不封装的方法,其实也可以只写个函数,但感觉封装更帅一些。
参数必须有个request,通过request.method判断是get请求还是post请求,不用说默认是get。
通过request.POST.get()获取相应的参数,其实按照我的想法,是应该能自动传过来User这个model类的,事实上也确实有类似的方法,就是继承django的ModelForm类,但这样会让前后端的耦合度太大,没错你没看错,是前后端耦合,现在都前后端分离了,哪能这么写啊,我就放弃了,这点设计远不如spring,不知有没有更好的方法,如果哪位大神知道请不吝赐教,User是我们自己写的模型,继承了models.Model,所以他就自带增删改成的功能,就在User.objects中

User.objects.create()#增
User.objects.delete()#删
User.objects.save()#改
User.objects.get()#差
User.objects.all()#获取全部
User.objects.count()#获取数量

都很见名之意,里面的参数基本都是动态参数,可以去网上查一下
这里其实就是用用户名查一下,然后对比一下密码是否一致,不一致直接response写入一个字符串
如果通过,就返回render函数,这个函数是django封装好的,第一个参数是request,第二个返回你要的模型,第三个参数就是一个字典,相当于返回需要携带的信息。我这个就相当于返回userinfo.html,返回的时候携带查出来的user,userinfo.html会将里面的信息进行渲染,就想jsp一样。
其余的功能也是类似的流程,主要是写个demo找找感觉。

写在最后

现在前后分离,后端只用来写api了,所以django这种模板框架我也是浅尝辄止,感觉过于笨重。后面可能会再看看 flask 和django REST。
用Django整体感觉python还是更适合做一些有趣的事,做做爬虫什么的它不香吗。web开发这么无聊的事,还是交给java吧…

如果有人想深入学习django,我推荐这个人的博客,写的很好
http://www.liujiangblog.com/blog/

  • 8
    点赞
  • 86
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: PyCharmDjango环境搭建步骤如下: 1. 安装Python:首先需要安装Python,建议安装Python 3.x版本。 2. 安装PyCharm:下载并安装PyCharm,选择Community版本即可。 3. 创建Django项目:在PyCharm中创建Django项目,选择Django模板即可。 4. 配置Django环境:在PyCharm中配置Django环境,设置Django的安装路径和Python解释器路径。 5. 安装Django:使用pip命令安装Django,可以在PyCharm的Terminal中执行命令:pip install Django。 6. 运行Django项目:在PyCharm中运行Django项目,可以使用Run按钮或者在Terminal中执行命令:python manage.py runserver。 以上就是PyCharmDjango环境搭建的步骤,希望对你有帮助。 ### 回答2: PyCharm 是一款 Python 集成开发环境,它可以帮助我们更加高效地编写和调试 Python 代码。而 Django 是一个强大的 Web 框架,它能够帮助我们快速构建复杂的 Web 应用程序。本文将介绍如何在 PyCharm搭建 Django 环境。 首先,我们需要在 PyCharm 中安装 Django 扩展,可以通过以下步骤完成: 1. 打开 PyCharm,进入 Settings(Windows 和 Linux 上为 File - Settings,Mac 上为 PyCharm - Preferences)。 2. 在左侧菜单中选择「Project: your_project_name」,然后选择「Project Interpreter」。 3. 点击右上方的「加号」按钮,在弹出的对话框中搜索「Django」。 4. 点击安装按钮,等待安装完成。 安装完成后,我们就可以开始创建 Django 项目了。可以通过以下步骤完成: 1. 在 PyCharm 的主界面上选择「Create New Project」。 2. 在弹出的对话框中选择「Django」并指定项目的名称和目录。 3. 选择所需的 Django 版本(如果您不确定,请选择最新的版本)。 4. 完成设置后,点击「Create」按钮即可创建 Django 项目。 创建项目后,我们需要配置 Django 环境。可以通过以下步骤完成: 1. 在 PyCharm 的主界面上选择「Edit Configurations」。 2. 点击「加号」按钮,选择「Django Server」。 3. 在「Script path」中指定 manage.py 的路径。 4. 在「Parameters」中输入 runserver。 5. 点击「OK」按钮保存配置。 至此,我们的 Django 项目就已经搭建好了。可以通过运行配置启动 Django 服务器,然后在浏览器中访问 http://localhost:8000/ 来查看效果。 总之,PyCharmDjango搭建是非常简单的,只需要按照以上步骤操作,就可以轻松地建立起一个高效稳定的开发环境。希望本文对你有所帮助。 ### 回答3: 在Python开发中,PycharmDjango是非常流行且强大的开发工具和开发框架。在开始使用它们进行开发前,我们需要先搭建好相应的环境。下面将为大家介绍PycharmDjango环境的搭建步骤。 一、安装Python 在安装PycharmDjango之前,首先需要安装Python环境。可以到官网中下载Python安装程序,并进行安装。建议使用最新的Python版本,保证开发时所用的语言版本支持最新的功能和特性。 二、安装Pycharm Pycharm是一款非常好用的Python集成开发环境,我们需要下载安装它。可以在官网下载对应的版本,打开安装程序即可按照提示进行安装。 三、创建Django项目Pycharm中创建Django项目需要按照如下步骤: 1.在Pycharm中新建一个项目,打开File –> New Project; 2.选择Django项目类型,并按照提示设置项目相关信息; 3.在创建项目的过程中需要勾选“Create virtual environment”以创建虚拟环境; 4.等待Pycharm执行完毕,并打开创建好的项目。 四、安装Django 在使用Django进行开发前,我们需要安装相应的Django库。可以在Pycharm中打开Terminal窗口,并使用pip命令进行安装。例如:在Terminal窗口中执行命令“pip install Django”,即可安装最新版本的Django。 五、运行Django项目 在安装和配置好Django后,我们可以在Pycharm中运行Django项目。这时需要在Pycharm中打开Terminal窗口,并使用命令“python manage.py runserver”启动Django的服务器,在浏览器中输入对应的地址即可查看Django项目在本地启动后的效果。 总结 通过以上步骤,我们就可以搭建PycharmDjango的开发环境,并进行项目的创建和开发工作。完整的环境搭建和配置是一个比较繁琐和具有挑战性的过程,但这些步骤对于我们来说非常重要,可以帮助我们快速掌握相关技术,并进行更加高效和专业的程序开发。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值