随着
互联网的普及和发展,
网络已经成为人们生活中不可或缺的一部分。在
局域网环境下,
搭建一个属于自己的
Web服务器,可以实现内部
资源共享和内部管理。本文将基于
Python的
Django框架,为大家分享如何构建自己的局域网web
服务器,并在此基础上扩展建立一个局域网的
用户管理系统。
一、搭建局域网web服务器
1. 环境准备
首先,需要确保你的电脑上安装了Python环境,并且安装了Django框架。如果没有安装,可以通过Python官网或Django官网下载并安装。
2. 创建项目
打开命令行,输入以下命令创建一个新的Django项目:
```
django-admin startproject myproject
```
3. 创建应用
在项目目录下,输入以下命令创建一个新的应用:
```
python manage.py startapp online
```
4. 编写视图
在`online/views.py`文件中,编写视图函数。例如,创建一个注册视图和一个登录视图,用于处理用户的注册和登录请求。
5. 编写URL
在`online/urls.py`文件中,编写URL路由,将视图函数与URL路径关联起来。
6. 编写模板
在`online/templates`目录下,编写
html模板文件。例如,创建一个注册页面模板和一个登录页面模板。
7. 运行服务器
在项目目录下,输入以下命令启动服务器:
```
python manage.py runserver
```
现在,你已经在局域网环境下搭建了一个web服务器。你可以通过浏览器访问`
HTTP://127.0.0.1:8000/`来查看你的web服务器。
二、建立局域网用户管理系统
1. 创建用户模型
在`online/models.py`文件中,创建一个用户模型,用于存储用户的注册
信息。例如,创建一个名为`User`的模型,包含用户名、密码等字段。
2. 扩展视图功能
在`online/views.py`文件中,扩展视图功能。例如,在注册视图中,将用户
信息保存到数据库;在登录视图中,验证
用户名和密码是否正确。
3. 扩展模板功能
在`online/templates`目录下,扩展HTML模板文件。例如,创建一个用户列表模板,用于显示所有注册用户的信息。
4. 运行服务器
在项目目录下,重新输入以下命令启动服务器:
```
python manage.py runserver
```
现在,你已经在局域网环境下搭建了一个具有用户
管理功能的web服务器。你可以通过浏览器访问`http://127.0.0.1:8000/`来查看你的web服务器,并进行用户注册和登录操作。
三、优化与拓展
1.
安全性优化
为了提高局域网web服务器的安全性,可以在用户密码存储时使用哈希
加密,防止密码泄露。此外,还可以实现用户
权限控制,限制不同用户的访问权限。
2. 功能拓展
为了丰富局域网web服务器的功能,可以添加更多模块,如论坛、博客、
文件管理等。此外,还可以根据实际需求,自定义更多的用户模型,如教师、学生、职员等,实现更加精细的用户管理。
3. 界面优化
为了提升
用户体验,可以优化HTML模板文件,使其更加美观、易用。此外,还可以使用前端框架,如Bootstrap或Vue.js,进一步提升界面交互效果。
通过本文的分享,相信你已经学会了如何在局域网环境下搭建一个具有用户管理功能的web服务器。在此基础上,你可以根据自己的需求,不断优化和拓展功能,使其更加完善。希望这篇文章能够帮助你更好地了解局域网web服务器搭建和用户管理。
一、前言
在上一篇文章中,博主给大家分享了如何基于410c利用python的Django框架去构建自己的局域网web服务器,今天我们在其基础上再扩展建立一个局域网的用户管理系统。

二、代码分析
1.代码框架

图1 代码框架
2.主代码分享:
2.1.online/view.py
#coding=utf-8
from
django.shortcuts
import
render
,
render_to_response
from
django.http
import
HttpResponse
,
HttpResponseRedirect
from
django.template
import
RequestContext
from
django
import
forms
from
online.models
import
User
from
django.contrib.auth
import
authenticate
,
login
#表单
class
UserForm
(
forms
.
Form
):
username
=
forms
.
CharField
(
label
=
'用户名'
,
max_length
=
100
)
password
=
forms
.
CharField
(
label
=
'密码'
,
widget
=
forms
.
PasswordInput
())
#def getuser(forms):
# return forms.username
# password1 = forms.CharField(label='重复密码',widget=forms.TextInput())
# loginaddr="http://127.0.0.1:8000/online/login/"
# registaddr=http://127.0.0.1:8000/online/regist/
#注册
def
regist
(
req
):
if
req
.
method
==
'POST'
:
uf
=
UserForm
(
req
.
POST
)
if
uf
.
is_valid
():
#获得表单数据
username
=
uf
.
cleaned_data
[
'username'
]
password
=
uf
.
cleaned_data
[
'password'
]
password1
=
req
.
POST
[
'password1'
]
#比较数据库中是否已有用户
#user = myUser.objects.all().filter(username = username)
#print(user)
if
User
.
objects
.
filter
(
username
=
username
)
.
exists
():
return
render_to_response
(
'registfaild.html'
,{
'uf'
:
uf
},
context_instance
=
RequestContext
(
req
))
else
:
if
password1
==
password
:
# User.objects.create(username= username,password=password)#添加用户进数据库
# profile=UserProfile()#e*************************
# profile.user_id=user.id
# profile.phone=phone
# profile.save()
# user=User()
# user.username=username
# user.password=password
# user.save()
user
=
User
.
objects
.
create_user
(
username
,
password
)
user
.
save
()
response
=
HttpResponseRedirect
(
'/online/registsuccee/'
)
return
response
else
:
return
render_to_response
(
'registfaild1.html'
,{
'uf'
:
uf
},
context_instance
=
RequestContext
(
req
))
else
:
uf
=
UserForm
()
return
render_to_response
(
'regist.html'
,{
'uf'
:
uf
},
context_instance
=
RequestContext
(
req
))
#登陆
def
login
(
req
):
# getAllUser(req)
if
req
.
method
==
'POST'
:
uf
=
UserForm
(
req
.
POST
)
if
uf
.
is_valid
():
#获取表单用户密码
username
=
uf
.
cleaned_data
[
'username'
]
password
=
uf
.
cleaned_data
[
'password'
]
#获取的表单数据与数据库进行比较
user
=
authenticate
(
username
=
username
,
password
=
password
)
if
user
is
not
None
:
#比较成功,跳转index
response
=
HttpResponseRedirect
(
'/online/index/'
)
#将username写入浏览器cookie,失效时间为3600
response
.
set_cookie
(
'username'
,
username
,
3600
)
return
response
else
:
#比较失败,跳转loginfaild
return
render_to_response
(
'loginfaild.html'
,{
'uf'
:
uf
},
context_instance
=
RequestContext
(
req
))
else
:
uf
=
UserForm
()
return
render_to_response
(
'login.html'
,{
'uf'
:
uf
},
context_instance
=
RequestContext
(
req
))
#def loginfaild(req):
# response = login(req)
# return response
#
def
registsuccee
(
req
):
if
req
.
method
==
'POST'
:
uf
=
UserForm
(
req
.
POST
)
if
uf
.
is_valid
():
#获取表单用户密码
username
=
uf
.
cleaned_data
[
'username'
]
password
=
uf
.
cleaned_data
[
'password'
]
#获取的表单数据与数据库进行比较
user
=
User
.
objects
.
filter
(
username__exact
=
username
,
password__exact
=
password
)
if
user
:
#比较成功,跳转index
response
=
HttpResponseRedirect
(
'/online/index/'
)
#将username写入浏览器cookie,失效时间为3600
response
.
set_cookie
(
'username'
,
username
,
3600
)
return
response
else
:
#比较失败,跳转loginfaild
return
render_to_response
(
'loginfaild.html'
,{
'uf'
:
uf
},
context_instance
=
RequestContext
(
req
))
else
:
uf
=
UserForm
()
#return render_to_response('registfaild.html',{'uf':uf},context_instance=RequestContext(req))
return
render_to_response
(
'registsuccee.html'
,{
'uf'
:
uf
},
context_instance
=
RequestContext
(
req
))
#
#def registfaild(req):
# response = regist(req)
# return response
#
#def registfaild1(req):
# response = regist(req)
# return response
#登陆成功
def
index
(
req
):
username
=
req
.
COOKIES
.
get
(
'username'
,
''
)
user_list
=
getAllUser
(
req
)
if
req
.
method
==
'POST'
:
key_user
=
req
.
POST
.
get
(
'username'
)
key_input
=
req
.
POST
.
get
(
'text'
)
print
(
key_user
)
print
(
key_input
)
if
key_input
==
'text'
:
print
(
'please input text'
)
response
=
HttpResponseRedirect
(
'/online/text/'
)
#将username写入浏览器cookie,失效时间为3600
response
.
set_cookie
(
'username'
,
username
,
3600
)
return
response
elif
key_input
==
'video'
:
print
(
'please input video'
)
response
=
HttpResponseRedirect
(
'/online/video/'
)
#将username写入浏览器cookie,失效时间为3600
response
.
set_cookie
(
'username'
,
username
,
3600
)
return
response
else
:
return
render_to_response
(
'loginsuccee.html'
,{
'user_list'
:
user_list
,
'username'
:
username
},)
# user_sum=user_list.count()
# if req.method == 'POST':
# if req.POST['username']=="ad3600":
# if req.post.get('text')=="video":
return
render_to_response
(
'loginsuccee.html'
,{
'user_list'
:
user_list
,
'username'
:
username
},)
#退出
def
logout
(
req
):
response
=
login
(
req
)
response
.
delete_cookie
(
'username'
)
return
response
#response = HttpResponse('logout !!')
#清理cookie里保存username
# response.delete_cookie('username')
# return response
def
getAllUser
(
req
):
user_list
=
User
.
objects
.
all
()
.
values
(
'username'
)
user_sum
=
User
.
objects
.
all
()
.
values
(
'username'
)
.
count
()
print
(
user_list
)
print
(
user_sum
)
return
user_list
def
text
(
req
):
#输入文本处理
username
=
req
.
COOKIES
.
get
(
'username'
,
''
)
if
req
.
method
==
'POST'
:
text
=
req
.
POST
[
'text_input'
]
print
(
req
.
user
.
is_anonymous
())
req
.
user
.
text
=
text
req
.
user
.
username
=
username
print
(
username
)
print
(
req
.
user
.
get_full_name
())
print
(
req
.
user
.
text
)
req
.
user
.
save
()
# print(dir(MyUser))
return
render_to_response
(
'text.html'
,)
def
video
(
req
):
#输入视频处理
return
req
def delete():
User.objects.filter().delete()
2.2.online/urls
from django.conf.urls import patterns, url
from online import views
import register.settings
urlpatterns = patterns('',
url(r'^$', views.login, name='login'),
url(r'^login/$',views.login,name = 'login'),
url(r'^loginfail/$',views.login,name = 'loginfail'),
url(r'^regist/$',views.regist,name = 'regist'),
url(r'^registfaild/$',views.regist,name = 'regist'),
url(r'^registfaild1/$',views.regist,name = 'regist'),
url(r'^registsuccee/$',views.registsuccee,name = 'registsuccee'),
url(r'^text/$',views.text,name = 'text'),
url(r'^video/$',views.video,name = 'video'),
url(r'^index/$',views.index,name = 'index'),
url(r'^logout/$',views.logout,name = 'logout'),
url(r'^stat
ic/(?P
.*)$', 'django.views.static.serve',{ 'document_root': register.settings.STATIC_URL }),
)
2.3.online/modes
#coding:utf8
from
django.db
import
models
from
django.contrib.auth.models
import
AbstractUser
from
django.conf
import
settings
# Create your models here.后台数据保存
# Create your models here.
class
User
(
models
.
Model
):
# nickname = models.CharField(max_length=64, bLANk=False)
# author = models.ForeiGNKey(settings.AUTH_USER_MODEL)
text
=
models
.
CharField
(
max_length
=
50
)
email
=
models
.
EmailField
()
# desc = models.TextField()
# qq = models.CharField(u'qq号', max_length=16)
username
=
models
.
CharField
(
max_length
=
50
)
password
=
models
.
CharField
(
max_length
=
50
)
def
__unicode__
(
self
):
return
self
.
username
#class UserAdmin(admin.ModelAdmin):
# list_display = ('username','password')
# Create your models here.
#class MyUser(AbstractUser):
# qq = models.CharField(u'qq号', max_length=16)
# weChat =models.CharField(u'微信账号', max_length=100)
# mobile =models.CharField(u'手机号', primary_key=True, max_length=11)
# identicard =models.BooleanField(u'身份证认证', default=False) #默认是0,未认证, 1:身份证认证, 2:视频认证
# refuserid = models.CharField(u'推荐人ID', max_length=20)
# Level = models.CharField(u'用户等级', default='0', max_length=2) #默认是0,用户等级0-9
# vevideo = models.BooleanField(u'视频认证', default=False) #默认是0,未认证。 1:已认证
# Type =models.CharField(u'用户类型', default='0', max_length=1) #默认是0,未认证, 1:刷手 2:商家
#
# def __str__(self):
# return self.username
三、实测效果

图2 登录页面

图3 注册页面
四、例程分享:http://PAN.baidu.com/s/1dFOKoI9