官网上的tutorial就不说了,这个肯定是要先看的。
下面以一个创建用户的例子来说明model, form和view的使用。注意这里不是用自动的admin功能。而是手动写MVC来添加用户。
首先要创建一个project. 我是在WINDOWS上做的,所以都有python命令,LINUX可以忽略这个。
python django-admin.py startproject mysite
创建一个app。
python manage.py startapp usermgmt
然后是创建model。
在mysite/usermgmt下创建一个文件models.py
class User(models.Model):
## Fields
username = models.CharField(max_length = 32, verbose_name = u'用户名');
password = models.CharField(max_length = 20, verbose_name = u'密码');
gender = models.IntegerField(choices = GENDER, verbose_name = u'性别');
mobilePhone = models.CharField(max_length = 11, verbose_name = u'手机号码');
telephone = models.CharField(max_length = 8, verbose_name = '电话号码');
city = models.IntegerField(choices = CITIES, verbose_name = '所在城市');
email = models.EmailField(unique = True, verbose_name = 'Email');
msn = models.EmailField(verbose_name = 'MSN');
qq = models.IntegerField(verbose_name = 'QQ');
registerTime = models.DateField(verbose_name = u'注册时间');
verify = models.ForeignKey(Verify, verbose_name = u'验证码'); ## foreign key
isActivated = models.BooleanField(verbose_name = u'是否激活');
isLocked = models.BooleanField(verbose_name = u'是否被锁定');
lastLoginTime = models.DateTimeField(verbose_name = u'上次登录时间');
lastLoginIP = models.IPAddressField(verbose_name = u'上次登录IP');
totalLoginCount = models.IntegerField(default = 0, verbose_name = u'总计登录次数');
totalPostCount = models.IntegerField(default = 0, verbose_name = u'总计发布信息数');
reportedCount = models.IntegerField(default = 0, verbose_name = u'总计被举报数');
## Methods
def __unicode__(self):
return self.username;
def get_absolute_url(self):
return "/userapi/%i/" % self.id;
有了model,就要创建对应的form。其实这不是必须,不过既然django提供了对form的简化处理,就该好好利用。
同样在mysite/usermgmt下创建一个文件forms.py
from django.db import models;
from django.forms import ModelForm;
class UserForm(ModelForm):
class Meta:
model = User;
exclude = ('registerTime', 'isActivated', 'isLocked', 'lastLoginTime', 'lastLoginIP',
'totalLoginCount', 'totalPostCount', 'reportedCount');
exclude值表示这些字段在页面呈现的时候并不显示。注意,页面中也不会出现这些字段的隐藏字段。
然后我们就可以创建对应的view处理程序了。
在mysite/usermgmt下创建一个文件views.py
from django.http import HttpResponse;
from django.forms import ModelForm;
from django.shortcuts import render_to_response;
from usermgmt.models import *;
from usermgmt.forms import *;
def newuser(request):
form = None;
if request.POST:
user = User();
form = UserForm(request.POST, instance = user);
if form.is_valid():
form.save();
return render_to_response('usermgmt/newuser.html',
{
'form': form,
'msg': 'User added successfully!',
});
else:
form = UserForm();
return render_to_response('usermgmt/newuser.html', {'form': form,});
MVC都全了么?没,还有newuser.html,这个页面模板。
在mysite下创建一个文件夹叫 templates,然后在里面创建一个文件夹叫usermgmt。因为一个django的project是可以包含多个app的,所以给不同的app建立不同的文件夹是比较好的选择。然后在里面创建一个newuser.html。内容极其简单。
<html>
<head>
<title>User register</title>
</head>
<body>
<form method="post" action="">
<table>
{{ form }}
</table>
<input type="submit" value="Submit"/>
<div>{{ msg }}</div>
</form>
</body>
</html>
现在万事俱备,就剩改一些settings了。
因为我们添加了一个新的app,所以在mysite/urls.py中需要修改成:
from django.conf.urls.defaults import *
from django.contrib import admin;
admin.autodiscover();
# Uncomment the next two lines to enable the admin:
# from django.contrib import admin
# admin.autodiscover()
urlpatterns = patterns('HouseRentPrj.HouseRent.views',
# Example:
# (r'^HouseRentPrj/', include('HouseRentPrj.foo.urls')),
# Uncomment the admin/doc line below and add 'django.contrib.admindocs'
# to INSTALLED_APPS to enable admin documentation:
# (r'^admin/doc/', include('django.contrib.admindocs.urls')),
# Uncomment the next line to enable the admin:
(r'^HouseRent/', include('mysite.usermgmt.urls')),
(r'^admin/', include(admin.site.urls)),
)
在settings.py中,INSTALLED_APPS中要加上mysite.usermgmt.
TEMPLATE_DIRS加上刚才的模板路径,注意这里必须是绝对路径。
上面这些修改相当于添加了这个app。
而URL映射是要在具体的app的urls.py中来修改的。
from django.conf.urls.defaults import *
# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('HouseRentPrj.HouseRent.views',
# Example:
# (r'^helloworld/', include('helloworld.foo.urls')),
# Uncomment the admin/doc line below and add 'django.contrib.admindocs'
# to INSTALLED_APPS to enable admin documentation:
# (r'^admin/doc/', include('django.contrib.admindocs.urls')),
# Uncomment the next line to enable the admin:
(r'^newuser/$', 'newuser'),
)
这样就好了,python manage.py runserver
然后在浏览器中输入 http://127.0.0.1:8000/mysite/newuser/试试。
分享到:
相关推荐
【标题】"tutsplus的django示例代码"是一份基于Django框架的教程实践项目,由知名在线教育平台Tutsplus提供。这个项目旨在帮助开发者深入理解和掌握Django的各种功能和最佳实践。 【描述】提到,这个示例代码覆盖了...
demo-allauth-bootstrap, Django 示例应用程序,包括通过 Django AllAuth提供社会认证的用户 demo-allauth-bootstrap简单,out-of-the-box Django 网站带有访问者( 无登录) 区域和用户( 需要登录) 区域,它的中注册...
Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design. Built by experienced developers, it takes care of much of the hassle of Web development, so ...
### Django概述及应用实例 #### 一、Django框架简介 **Django** 是一个用 Python 编写的高级 Web 框架,它遵循模型-视图-模板(Model-View-Template,MVT)的设计模式。Django 的设计目标是简化 Web 开发流程,并...
学习这个示例项目,你将能理解Django的工作原理,掌握Web开发的基础,同时也能为今后更复杂的项目打下坚实基础。记得在实践中不断尝试和学习,遇到问题时查阅官方文档或在线社区,你将逐步成为Django和Python的高手...
在本资源中,我们主要关注的是使用Python编程语言和Django框架进行Web开发。Django是基于Python的一个高级Web框架,它遵循模型-视图-控制器(MVC)设计模式,旨在让开发者能够快速地构建功能完备且安全的Web应用程序...
基于Django3.0.5+Python3.7+SQLite的博客系统源码 基于Django3.0.5+Python3.7+SQLite的博客系统源码 基于Django3.0.5+Python3.7+SQLite的博客系统源码 基于Django3.0.5+Python3.7+SQLite的博客系统源码 基于...
**Django示例:Django使用** Django是Python领域中最受欢迎的Web开发框架之一,以其高效、安全和可扩展性著称。本教程将深入探讨Django的使用,包括项目创建、应用设置、数据库模型、视图、模板以及URL路由等方面。...
Django示例项目,允许注册用户编辑其个人资料。 该代码在 (原始启动程序)上提供, 是受欢迎的开源Djaango启动程序。 状态:@WIP 特征 支持UI的应用程序,SQLite数据库,Django本机ORM 基于会话的身份验证,表单...
django-12factor-docker django示例项目展示了使用docker的12因子架构。配置在正确启动整个环境之前,需要先进行一些基本配置。 配置文件位于conf文件夹中,并且使用语法KEY = VALUE ,每行应包含一个环境变量定义。...
django-fullstack 全栈 django 示例项目构建在多个 docker 容器上,可用于development和production 。 电池postgres (带有postgis和hstore扩展) nginx gunicorn redis celery rabbitmq 创建自己的git clone git@...
弹性豆茎-nginx-uwsgi-django 在AWS Elastic Beanstalk上运行uWSGI和Nginx的Django示例应用程序。 $ eb init$ eb create ebsample-env -p "Python 2.7" --single --sample设置环境属性: $ eb setenv ALLOWED_HOSTS=...
【PyDev与Django简介】 PyDev是一款强大的Python开发环境,它是Eclipse集成开发环境(IDE)的一个插件,专为Python、Jython和IronPython编程提供支持。PyDev提供了许多高级特性,如代码自动完成、语法高亮、调试器...
基于 vue3 + vite2 + django 的小区管理平台(优质项目)适用人群:计算机,软件工程、人工智能,电子信息等专业的大学生课程设计、期末大作业或毕业设计,作为“参考资料”使用。 基于 vue3 + vite2 + django 的...
Openshift快速入门:Django 这是一个项目,您可以以此为起点来开发自己的项目并将其部署在集群上。 注意:此版本包含与RHEL / Centos 7一起使用的过时的Django 1.11.x LTS。请考虑在使用Django 2.2.x LTS切换到...
ecs-fargate-sample-app django示例应用程序演示ecs fargate部署 请参阅以下博客文章。 对于CDK部署,请参考以下链接。
【Python Django Demo项目】...这个Django示例项目是一个基础的Web应用,通过它你可以学习到Django的基础架构和工作流程。随着学习深入,你还可以涉及更多高级特性,如用户认证、表单处理、中间件、自定义管理界面等。
源码亲测可用,可做...python+Django+mysql 【实现功能】 本系统主要分为前台和后台两大功能,前台包括首页、图书列表、数据可视化、关于和后台管理。后台主要包括首页、权限认证、图书管理和借阅管理及学生管理。
Django React Polls示例这是Django中完全由React渲染的前端的示例实现它旨在作为Django见面会演讲的参考。 您可能会发现的很有帮助安装Django的克隆回购安装python要求并使用pipenv sync && pipenv shell激活...
在Django示例中,这可能通过自定义的JavaScript库或者使用像Cordova这样的第三方库来实现。当JavaScript发出请求时,WebView会捕获并转发到相应的原生方法,执行完成后将结果返回给JavaScript,从而完成调用。 为了...