使用Django搭建网站的第一天(注册功能实现)

本人学习python也有一段时间了,平常都是使用python去写一些爬虫,现在想试着使用Django这个框架去搭建一个简单的网站,也是为了记录自己的学习过程,了解之后发现Django这个框架还是很强大与方便使用的, 由于本人也是个菜鸟,所以代码只供大家参考,也为了看一些本人给出的意见与好的方法一起学习。以下代码python版本为3.7,Django版本使用的是2.0以上版本,数据库建议也别使用低版本的,因为会报出错误。好了,下面就是具体的代码实现,由于本人不是个完美的人,所以前端界面的代码写的奇丑无比,就不给大家看了。

关于如何安装python与Django有很多教程指导的很详细,这里就不多说了。

第一步,就是要去配置django的配置文件,也就是settings.py这个文件了
在在这里插入图片描述由于Django每个项目对应的都是一个app,所以首先要在INSTALLED_APPS添加自己创建的app名字,否则会提示找不到这个app。
在这里插入图片描述这个TEMPLATES对应的是你需要存放前端界面的地方,低版本的Django需要更改编写此处,我们不需要因为已经写好了。
在这里插入图片描述接下来就是数据库的配置更改,Django默认使用的是sqlite,当然也可以使用默认的,不过个人建议还是要用MySQL,只需要将ENGINE更改为MySQL,其余的根据自己的实际情况填写就可以了,如果没有安装pymysql这个包的话,需要提前安装,否则会出现错误,具体解决办法请自行百度。
在这里插入图片描述接下来需要更改Django的国际化问题,根据图片所示修改即可。
在这里插入图片描述最后需要配置static文件的存放目录和富文本编辑器的配置添加(如果需要用富文本编辑器的话,需要提前安装tinymce的包)。

好了,这里准备工作就已经全部完成了,接下来进行编写代码。
在这里插入图片描述我们需要在models.py中编写所需数据库代码,实例代码如下 :
用户表字段信息

from django.db import models
from datetime import datetime
from df_goods.models import GoodsInfo

Create your models here.

class UserInfo(models.Model):
uname = models.CharField(max_length=20, verbose_name=“用户名”, unique=True)
upwd = models.CharField(max_length=40, verbose_name=“用户密码”, blank=False)
uemail = models.EmailField(verbose_name=“邮箱”, unique=True)
ushou = models.CharField(max_length=20, default="", verbose_name=“收货地址”)
uaddress = models.CharField(max_length=100,default="", verbose_name=“地址”)
uyoubian = models.CharField(max_length=6, default="", verbose_name=“邮编”)
uphone = models.CharField(max_length=11, default="", verbose_name=“手机号”)

class Meta:
    verbose_name = "用户信息"
    verbose_name_plural = verbose_name

def __str__(self):
    return self.uname

class GoodsBrowser(models.Model):
user = models.ForeignKey(UserInfo, on_delete=models.CASCADE, verbose_name=“用户ID”)
good = models.ForeignKey(GoodsInfo, on_delete=models.CASCADE, verbose_name=“商品ID”)
brower_time = models.DateTimeField(default=datetime, verbose_name=“浏览时间”)

class Meta:
    verbose_name = "用户浏览记录"
    verbose_name_plural = verbose_name

商品表字段信息

from django.db import models
from tinymce.models import HTMLField

Create your models here.

class TypeInfo(models.Model):
isDelete = models.BooleanField(default=False)
ttile = models.CharField(max_length=20, verbose_name=“分类”)

class Meta:
    verbose_name = "商品类型"
    verbose_name_plural = verbose_name

def __str__(self):
    return self.ttile

class GoodsInfo(models.Model):
isDelete = models.BooleanField(default=False)
gtitle = models.CharField(max_length=20, verbose_name=“商品名称”, unique=True)
gpic = models.ImageField(upload_to=‘df_goods’, verbose_name=“图片路径”)
gprice = models.DecimalField(max_digits=7, decimal_places=2, verbose_name=“商品价格”)
gunit = models.CharField(max_length=20, default=2, verbose_name=“单位”)
gjianjie = models.CharField(max_length=100, verbose_name=“简介”)
gkucun = models.IntegerField(verbose_name=“库存”)
gcontent = HTMLField(max_length=1000, verbose_name=“详情”)
gtype = models.ForeignKey(TypeInfo, on_delete=models.CASCADE, verbose_name=“分类”)

class Meta:
    verbose_name = "商品"
    verbose_name_plural = verbose_name

def __str__(self):
    return self.gtitle

在编写号这些表字段信息以后,只需要在控制台输入python manage.py makemigrations 生成特定文件,在输入python manage.py migrate 这些表就会自己在数据库中生成,这也是本人觉得Django做的比较号的地方,因为不需要在自己去操作数据库。
在这里插入图片描述这是已经执行完毕得到数据库表信息,可以看到我们刚创建的表已经存在了。

数据库准备完毕以后我们就需要在views.py 中编写实现登录功能的代码了,具体如下:

from django.shortcuts import render, redirect, HttpResponseRedirect, reverse, HttpResponse
from django.core.paginator import Paginator
from django.http import JsonResponse

from hashlib import sha1 # 密码加密
from .models import GoodsBrowser, UserInfo

from . import user_decrorator

Create your views here.

def register(request):
context = {
‘title’: ‘用户注册’
}
return render(request, ‘df_user/register.html’, context)

def register_handler(request):
username = request.POST.get(‘user_name’)
password = request.POST.get(‘pwd’)
confirm_pwd = request.POST.get(‘confirm_pwd’)
email = request.POST.get(‘email’)

if password != confirm_pwd:
    return redirect('/user/register/')
s1 = sha1()
s1.update(password.encode('utf8'))
encrypted_pwd = s1.hexdigest()

UserInfo.objects.create(uname=username, upwd=encrypted_pwd, uemail=email)
context = {
    'title': '用户登录',
    'username': username,
}
return render(request, 'df_user/login.html', context)

def register_exist(request):

username = request.GET.get('uname')
count = UserInfo.objects.filter(uname=username).count()
return JsonResponse({'count': count})

最后一步,就是配置urls.py中的信息, 个人建议在自己创建的app中复制一个urls.py文件 比较方便。

首先是,urls.py中的配置信息

from django.contrib import admin
from django.urls import path
from django.conf.urls import url, include

urlpatterns = [
path(‘admin/’, admin.site.urls),
url(r’^’, include(‘df_goods.urls’, namespace=‘df_goods’)),
url(r’^user/’, include(‘df_user.urls’, namespace=‘df_user’)),
url(r’^tinymce/’, include(‘tinymce.urls’)),

]

接下来是df_user中的urls.py配置信息
from django.conf.urls import url, include
from .views import *
app_name = ‘df_user’
urlpatterns = [
url(r’^register/ ′ , r e g i s t e r , n a m e = " r e g i s t e r " ) , u r l ( r ′ r e g i s t e r h a n d l e r / ', register, name="register"), url(r'^register_handler/ ,register,name="register"),url(rregisterhandler/’, register_handler, name=“register_handler”),
url(r’register_exist/$’, register_exist, name=“register_exist”),

]

好了,我们的注册功能到这就已经成功实现啦,代码已经成功跑通了,有问题的可以留在评论中,别忘了 自己去写一个前端页面啊 ,丑一点没关系。
后面会更新其余功能。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值