本篇内容介绍了“D语言怎么创建一个blog项目”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
创新互联是一家集网站建设,边坝企业网站建设,边坝品牌网站建设,网站定制,边坝网站建设报价,网络营销,网络优化,边坝网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
1.首先拉取skeleton项目为基础,文件命名为myprogect
git clone https://github.com/huntlabs/hunt-skeleton.git myproject cd myproject dub run -v
2.修改项目中config下的application.conf文件中关于数据库的相关配置
hunt.database.default.driver=MySQL hunt.database.default.host=127.0.0.1 hunt.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.d module 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.d module 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.d module app.blog.repository.BlogRepository; import app.blog.model.Blog; import hunt.entity; class BlogRepository : EntityRepository!(Blog , int){ } //UserRepository.d module 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.d module 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.d module 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.htmltitle name description picture content {% for blog in blogs %} {{ blog.title }} {{ blog.user.username}} {{ blog.description }} {{ blog.picture }} {{ blog.content }} Read Full {% endfor %} title name description picture content
//blog_add.html