D语言怎么创建一个blog项目
本篇内容介绍了"D语言怎么创建一个blog项目"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
1.首先拉取skeleton项目为基础,文件命名为myprogect
git clone https://github.com/huntlabs/hunt-skeleton.git myprojectcd myprojectdub run -v
2.修改项目中config下的application.conf文件中关于数据库的相关配置
hunt.database.default.driver=mysqlhunt.database.default.host=127.0.0.1hunt.database.default.port=3306 //接口hunt.database.default.database=myblog //数据库名称hunt.database.default.username=root //数据库用户名hunt.database.default.password= //数据库密码hunt.database.default.charset=utf8 hunt.database.default.prefix=hunt.database.default.enabled=true
3.首先实现Blog项目后台管理;确定项目后台功能并在config下创建admin.routes文件定义路由
GET /user/list user.users //用户列表页面* /user/add user.add //用户添加操作GET /user/delete user.remove //用户删除操作GET /user/update user.update //用户修改页面POST /user/doup user.doupdate //用户修改操作GET /blog/list blog.blogs //文章列表页面* /blog/add blog.add //文章添加页面POST /blog/doadd/ blog/doadd //文章添加操作
4.在source--app下建立Blog模块;在Blog中新建一个model模型,在model下创建Blog.d以及User.d文件,用来存放对应数据表中的数据;
//Blog.dmodule app.blog.model.Blog; import hunt.entity;import app.model.User;@Table("blog")class Blog : Model{ mixin MakeModel; @AutoIncrement @PrimaryKey int id; //主键,自动增长 long created; //时间 string title; //文章标题 string description; //描述 string picture; //图片 string content; //内容 @OneToOne() @JoinColumn("user_id") User user;//通过user_id关联User表}//User.dmodule app.blog.model.User;import hunt.entity;@Table("user")class User : Model { mixin MakeModel; @AutoIncrement @PrimaryKey int id; string username; //用户名 string password; //密码 string email; //邮箱}
5.以model为基础;在source--app--blog下新建repository文件,创建相应的BlogRepository.d、UserRepository.d文件;对数据进行操作
//BlogRepository.dmodule app.blog.repository.BlogRepository;import app.blog.model.Blog; import hunt.entity;class BlogRepository : EntityRepository!(Blog , int){}//UserRepository.dmodule app.blog.repository.UserRepository;import app.blog.model.User; import hunt.entity;class UserRepository : EntityRepository!(User,int){}
6.在source--app--blog下新建admin文件,在admin中创建BlogController.d、UserController.d来实现后台管理;包括文章的管理以及对用户的浏览、添加、删除、修改
//BlogController.dmodule app.blog.controller.admin.BlogController;import hunt.framework;import app.blog.form.BlogForm;import app.blog.model.Blog;import app.blog.repository.BlogRepository;import app.blog.repository.UserRepository;class BlogController : Controller{ mixin MakeController; //文章的添加 @Action string add(BlogForm form) { if(request.method == HttpMethod.POST) { auto result = form.valid(); if(result.isValid) { auto blog = new Blog ; blog.title = form.tit; blog.description = form.dept; blog.picture = form.pic; blog.content = form.cont; blog.created = time(); auto repo = new BlogRepository; repo.save(blog); return "successed!"; } view.assign("messages", result.messages()); } view.assign("blog", (form is null) ? new BlogForm : form); view.assign("users", (new UserRepository).findAll());//查出User的全部信息 return view.render("blog_add"); } //文章列表浏览 @Action string blogs() { auto repo = new BlogRepository; auto blogs = repo.findAll();//查找全部文章信息 view.assign("blogs",blogs); return view.render("blog_list");//跳转到列表页面 }}
//UserController.dmodule app.blog.controller.admin.UserController;import hunt.framework;import app.blog.form.UserForm;import app.blog.model.User;import app.blog.repository.UserRepository;class UserController : Controller{ mixin MakeController; //用户添加 @Action string add(UserForm form) { if (request.method == HttpMethod.POST) { auto result = form.valid(); if(result.isValid) { auto user = new User; user.username = form.um; user.password = form.pwd; user.email = form.mail; auto repo = new UserRepository; repo.save(user); return "successed"; } view.assign("messages",result.messages()); } view.assign("user",(form is null) ? new UserForm : form); return view.render("user_add"); } //用户列表浏览 @Action string users() { auto repo = new UserRepository; auto users = repo.findAll(); view.assign("users",users); return view.render("user_list"); } //用户删除操作 @Action string remove(int id) { auto repo = new UserRepository; repo.removeById(id);//根据id删除用户信息 return "deleted"; } //用户修改列表 @Action string update(int id) { auto repo = new UserRepository; auto user = repo.find(id);//通过id查找要修改的信息 view.assign("user",user); return view.render("user_up");//跳转到修改页面 } //用户修改操作 @Action string doupdate(UserForm form) { auto repo = new UserRepository; auto user = repo.find(form.id.to!int); user.username = form.um; user.password = form.pwd; user.email = form.mail;//进行修改操作 repo.save(user);//保存 return "successed"; }}
7.在view下新建admin,在admin中新建header.html、footer.html、sidebar.html显示列表以及目录的CSS样式;blog_list.html、blog_add.html、user_add.html、user_list.html、user_up.html来实现功能列表;显示部分代码
//blog_list.html
{% for blog in blogs %} title name description picture content {% endfor %} {{ blog.title }} {{ blog.user.username}} {{ blog.description }} {{ blog.picture }} {{ blog.content }} Read Full title name description picture content
//blog_add.html
//user_add.html
//user_list.html
//user_up.html
8.在source--app--blog下新建form文件,创建form表单BlogForm.d、UserForm.d文件;与模板页中name的字段值一致;并定义字段的范围;
//BlogForm.dmodule app.blog.form.BlogForm;import hunt.framework;class BlogForm : Form{ mixin MakeForm; string id; string uid; //与User表关联的user_id @NotEmpty //name的值不能为空 string nm; @Length(6,18) //title的值在6到18位之间 string tit; @Length(10,100) //description的值在10到100位之间 string dept; string pic; //图片 @Length(10,200) //content的值在10到200位之间 string cont;}//UserForm.dmodule app.blog.form.UserForm;import hunt.framework;class UserForm : Form{ mixin MakeForm; string id; @Length(3, 18) //用户名的值在3到18位之间 string um; @Length(6, 16) //密码的值在6到16位之间 string pwd; @Length(6, 32) //邮箱的值在6到32位之间 string mail;}
9.进行Blog项目的前台管理;确定前台能够实现的功能,在config下的routes中定义路由
GET /add blog.add //文章添加页面POST /blog/add blog.doadd //文章添加操作GET /blog/delete blog.remove //文章删除操作GET /blog/list blog.blogs //文章列表浏览页面POST /blog/doup blog.doupdate //文章修改操作GET /blog/update blog.update //文章修改页面
10.在source--app--controller下创建BlogController.d文件,实现Blog前台管理包括浏览,添加,修改,删除功能
module app.blog.controller.BlogController;import app.blog.form.BlogForm;import app.blog.model.Blog;import app.blog.repository.BlogRepository;import hunt.framework;class BlogController : Controller{ mixin MakeController; //文章添加 @Action string add()//跳转到添加页面添加 { return view.render("blog_add"); } @Action string doadd(BlogForm form)//添加操作 { auto blog = new Blog ; blog.title = form.tit; blog.description = form.dept; blog.picture = form.pic; blog.content = form.cont; blog.created = time();//时间为当前时间 auto repo = new BlogRepository; repo.save(blog);//保存 return "successed!"; } //文章列表 @Action string blogs() { auto repo = new BlogRepository; auto blogs = repo.findAll();//查找所有的文章信息 view.assign("blogs",blogs); return view.render("blog_list");//跳转到列表页面 } //文章删除 @Action string remove(int id) { auto repo = new BlogRepository; repo.removeById(id);//通过id删除文章信息 return "deleted"; } //文章修改 @Action string update(int id)//修改页面 { auto repo = new BlogRepository; auto blog = repo.find(id);//通过id查到需要修改的文章信息 view.assign("blog",blog); return view.render("blog_up");//跳转到修改页面 } @Action string doupdate(BlogForm form)//修改操作 { auto repo = new BlogRepository; auto blog = repo.find(form.id.to!int); blog.title = form.tit; blog.description = form.dept; blog.picture = form.pic; blog.content = form.cont;//进行修改操作 repo.save(blog);//保存 return "successed"; }}
11.在views下的default中创建footer.html,header.html用来储存模板页中的CSS样式,blog_add.html, blog_up.html,blog_list.html分别显示blog添加,修改,列表模板页;
//blog_list.html{% include "header.html" %}Page Heading Secondary Text
{% for blog in blogs %}{% endfor %}{% include "footer.html" %}//blog_add.html//blog_up.html"D语言怎么创建一个blog项目"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
文章 用户 页面 文件 项目 信息 数据 之间 浏览 管理 功能 数据库 内容 前台 后台 密码 时间 模板 用户名 语言 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 手机如何更改代理服务器 上海猫云网络技术有限公司 数据库中索引被破坏后会发生什么 乡镇网络安全管理机构 云服务器 双线 网络安全防御系统事例 我的世界优化服务器 mit脑电数据库 最缺网络安全员 手机端搭建服务器 网络安全个人 数据库主从master 韶关市网络安全问题 网络安全教案小学反思 大学做好网络安全的通知 杭州营销软件开发培训 软件开发子系统划分 网络安全的会议精神 云顶手游怎么转服务器 油气 网络安全培训 手机如何更改代理服务器 物灵网络技术有限公司 望远县软件开发技术好不好 计算机网络安全基础护肤水乳 中国几大数据库 服务器如何查询被禁用ip 侯绍东软件开发得奖 数据库索引在哪个位置 数据库的模式是什么 通信网络技术教案