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安全错误
数据库的锁怎样保障安全
创景网络技术
中信银行总行和软件开发中心
中国首次发布海洋化合物数据库
剑侠情缘最新服务器
sql中数据库数值自动增长
国家怎样保障网络安全
服务器安全卫士的功能
中国保险网络安全
颜体网络安全书法作品
aws 服务器快速迁移
学生网络技术开发口碑推荐
oracle启停数据库
我国网络安全应急体系
等之间的网络安全
网络安全宣传周简单的手抄报图片
品质网络技术服务好处
论文的数据库设计怎么写
山东济南互联网科技公司
网络技术介入教学适切性评估
图像数据库怎样构建
数据库修改 update
惠州支付软件开发咨询
网络安全技术与设备就业方向
烟草行业网络安全自查自评
百度网络安全大会
网络安全的认识和理解
我国网络安全应急体系
属于一级蛋白质结构数据库
公网访问公司内网数据库
方舟无法读取服务器