千家信息网

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

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇内容介绍了"D语言怎么创建一个blog项目"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.首先
千家信息网最后更新 2026年11月03日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项目"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

文章 用户 页面 文件 项目 信息 数据 之间 浏览 管理 功能 数据库 内容 前台 后台 密码 时间 模板 用户名 语言 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 天津市摩尔互联网科技 科技制造互联网公司 华中科技大学互联网 壹账通互联网科技 亿账通互联网科技 沃里互联网科技 互联网科技logo 碳银互联网科技有限公司 科技类的互联网平台 盛创互联网科技有限公司 无锡溥仪互联网科技有限公司 互联网科技公司招聘 世界互联网科技公司市值排名 互联网科技公司实习生 开一家科技互联网公司需要多少钱 银川新华互联网科技学校联系电话 山东子淼互联网科技有限公司 富国互联网金融科技混合基金 江苏互联网智能科技产品出厂价 北京品多多互联网科技有限公司 中国互联网科技股 未来的互联网科技 天下捷融互联网科技 滨湖区互联网智能科技产品供应 深圳前海聚择互联网科技有限公司 厦门千工互联网科技有限公司 互联网金融科技展 南京一网一红互联网科技有限公司 悟空问答互联网科技 陕西彩京云互联网科技有限公司
0