千家信息网

D语言怎么创建一个blog项目

发表于:2024-09-25 作者:千家信息网编辑
千家信息网最后更新 2024年09月25日,本篇内容介绍了"D语言怎么创建一个blog项目"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.首先
千家信息网最后更新 2024年09月25日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 %} {% endfor %}
title name description picture content
{{ blog.title }} {{ blog.user.username}} {{ blog.description }} {{ blog.picture }} {{ blog.content }} Read Full
title name description picture content
//blog_add.html
{% if messages %}
    {% for key, message in messages %}
  • {{ key }} : {{ message }}
  • {% endfor %}
{% endif %}
//user_add.html
{% if messages %}
    {% for key, message in messages %}
  • {{ key }} : {{ message }}
  • {% endfor %}
{% endif %}
//user_list.html
{% for user in users %} {% endfor %}
username email Delete Update
{{ user.username}} {{ user.email}} Delete Update
username email Delete Update
//user_up.html

Username:

Password:

Email:

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 %}
Card image cap

{{blog.title}}

{{blog.description}}

Read More →
{% endfor %}{% include "footer.html" %}
//blog_add.html            

Name:

Title:

Description:

Picture:

Content:

//blog_up.html

Name:

Title:

Description:

Picture:

Content:

"D语言怎么创建一个blog项目"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

0