当前位置:   article > 正文

Beego学习之路(二)_beego程序运行所在端口

beego程序运行所在端口

Beego学习之路(二)

一、配置文件

1、在程序包的创建conf文件夹,配置app.conf

#应用配置,用于定义名字
AppName=配置测试
#运行,生产模式prod[默认],开发模式dev,生产模式可以在网页中展示错误
RunMode=dev
#拷贝body数据
CopyRequestBody=true
#上传文件缓冲内存大小
MaxMemory=104857600
#修改服务器bannner信息,修改beego服务器名字和版本
ServerName=cc
#WEB配置
AutoRender=true  #在动态路由的时候没有函数模板文件,自动根据函数名寻找模板文件
ViewsPath=views   #默认存放文件的地方
StaticDir=static  #默认存放静态文件的地方
#监控配置 beego.Run端口默认8080
HTTPPort=${HTTPPort||9999}   #当设置了环境变量之后即可覆盖默认值
HTTPAddr=127.0.0.1
#可以通过类似于C#的特性来准备两套,一套用于生产环境,一套用于开发模式
[dev]
HTTPPort=8888   #生产模式下的端口
[prod]
HTTPPort=80     #开发模式下的端口
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

2、调用配置文件

package main

import (
	"fmt"
	"github.com/astaxie/beego"
)

type HomeController struct {
	beego.Controller
}

func main() {
	fmt.Println(beego.AppConfig.String("MYSQL_HOST")) //获取beego的MYSQL_HOST配置
	fmt.Println(beego.AppConfig.Int("MYSQL_PORT"))    //使用Int类型获得MYSQL的端口
	fmt.Println(beego.AppConfig.Bool("MYSQL_Parse"))
	//使用自定义配置来设置相关的参数
	fmt.Println(beego.AppConfig.DefaultString("MYSQL_HOSTTIME", "127.0.0.1"))
	fmt.Println(beego.AppConfig.DefaultInt("MYSQL_PORT", 80)) //同理可以得到相同的其他配置参数,当拥有配置参数的时候就直接获取参数,没有配置的是时候得到默认的都那口

	beego.Run()
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

3、可以使用建立多个conf互相嵌套的方式来创建

(一) mysql.conf

#mysql的配置文件
MYSQL_HOST=127.0.0.1
MYSQL_PORT=120
MYSQL_USER=CAS
MYSQL_PARSE=true
  • 1
  • 2
  • 3
  • 4
  • 5

(二)app.conf

#调用mysql的配置文件
include "mysql.conf"
  • 1
  • 2

(三) 创建拥有特性标识符的配置文件

main函数,在调用的时候需要加上文件号

package main

import (
	"fmt"
	"github.com/astaxie/beego"
)

type HomeController struct {
	beego.Controller
}

func main() {
	fmt.Println(beego.AppConfig.String("mysql::MYSQL_HOST")) //获取beego的MYSQL_HOST配置
	fmt.Println(beego.AppConfig.Int("mysql::MYSQL_PORT"))    //使用Int类型获得MYSQL的端口
	fmt.Println(beego.AppConfig.Bool("mysql::MYSQL_Parse"))
	//使用自定义配置来设置相关的参数
	fmt.Println(beego.AppConfig.DefaultString("mysql::MYSQL_HOSTTIME", "127.0.0.1"))
	fmt.Println(beego.AppConfig.DefaultInt("mysql::MYSQL_PORT", 80)) //同理可以得到相同的其他配置参数,当拥有配置参数的时候就直接获取参数,没有配置的是时候得到默认的都那口

	beego.Run()
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

mysql.conf

#mysql的配置文件
[mysql]
MYSQL_HOST=127.0.0.1
MYSQL_PORT=120
MYSQL_USER=CAS
MYSQL_PARSE=true
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

二、简单的用户登录

需要源码在评论区留言

思路讲解:

(一)配置app.conf和sql.conf;

(二)main包为beego入口,跳转到router包(负责绑定路由结构体),绑定之后在Controller包写绑定的方法(登录,跳转主页等方法);

(三)models包主要负责对象的定义(例如数据库对象,User对象等);

Controller包

package controller

import (
	"cmdb/errors"
	"cmdb/forms"
	"cmdb/models"
	"fmt"
	"github.com/astaxie/beego"
	"net/http"
)

type AuthController struct {
	beego.Controller
}

//认证登录
func (c *AuthController) Login() {
	form := &forms.LoginForm{}
	e := errors.New()
	//如果是get请求,直接请求页面
	if c.Ctx.Input.IsGet() {
		c.TplName = "auth/login.html"
	}
	//如果是post请求,验证数据
	if c.Ctx.Input.IsPost() {
		//获取用户提交数据
		err := c.ParseForm(form) //解析表单
		if err == nil {
			user := models.GetUser(form.UserName)
			if user == nil {
				//用户不存在,将错误添加到map中
				e.Add("default", "用户不存在")
			} else if user.ValidPassword(form.PassWord) {
				//用户密码正确
				fmt.Println("登录成功")
				c.Redirect("/home/index", http.StatusFound) //跳转主页,返回状态码302
			} else {
				e.Add("default", "密码错误")
			}
		} else {
			e.Add("default", "用户或者密码错误")
		}
		//验证成功
		//验证失败
	}
	c.Data["form"] = form
	c.Data["errors"] = e //将值传送给模板
	c.TplName = "auth/login.html"
	//如果是post请求,判断数据库的增删查改
	//请求页面
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52

遇到的坑:

(一)、数据库的db对象我重新初始化了一次;

(二)、绑定的结构体名字后面不为Controller;

看完如果对自己有所帮助,请点赞支持。

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号