본문 바로가기
반응형

전체 글374

Go언어 - Gin Framework(4강 개별 Article 화면 구성) 개별 Article 화면 구성 현재까지 구성한 앱에서는 Article을 클릭했을 때 링크가 작동하지 않았습니다. 이번에는 각 Article에 대한 핸들러와 템플릿을 추가하도록 하겠습니다.1. Route 설정router.GET("/article/view/:article_id", getArticle)main함수의 Route 설정 부분에 위구문을 추가합니다. 위 라우터는 패턴과 맞는 요청에 대해 경로를 일치시키고, 경로 마지막부분을 route 파라미터인 article_id에 저장합니다. 이 라우터에서는 handler함수로 getArticle을 정의합니다. main.go 전체 코드 모습package main import ( //"net/http" "github.com/gin-gonic/gin" ) var rou.. 2020. 12. 15.
Go언어 - Gin Framework(3강 Article List) Article List 표시 이 섹션에서는 index 페이지에 모든 article list를 표시하는 기능을 추가합니다. 1.Router 설정 원문에 따르면 응용 프로그램이 커질 것을 대비하여 별도의 Router파일에서 경로를 정의하는 방식으로 구성하였는데, 무슨 문제인지 제 실습 중에는 routes.go파일에 따로 코드를 분리하니 에러가 발생했습니다. 그래서 route 를 main() 함수 내부에 구성하도록 하겠습니다. 단, route handler 함수만 별도로 분리해 내도록 하겠습니다.(handlers.article.go) main.go파일은 아래와 같이 코딩합니다. package main import ( //"net/http" "github.com/gin-gonic/gin" ) var router.. 2020. 12. 14.
Go언어 - Gin Framework (2강 HTML Template 구성) 이것저것 하다보니 일관된 포스팅 하기가 힘드네요...^^;; 오늘은 Gin Framework 강좌를 따라해볼까 합니다. 원 Tutorial은 여기를 참고했습니다. 파일 구성은 아래와 같이 구성하는 것으로 시작합니다. 1. main.gopackage main import ( "net/http" "github.com/gin-gonic/gin" ) func main() { r := gin.Default() r.LoadHTMLGlob("templates/*") r.GET("/", func(c *gin.Context) { // OK 이면 index.html파일에 JSON데이터를 넘겨서 보여줌 c.HTML(http.StatusOK, "index.html", gin.H{ "title": "Home Page", }, .. 2020. 12. 13.
Go언어 - Lorca GUI 간단한 메모장 이번에는 모듈 구분을 하여 코드를 좀 다듬어보려고 합니다. 아직 Lorca는 예제가 많지도 않고, 튜토리얼이 있는 상태도 아니어서 혼자 여러가지 방식을 시도해 보는 중입니다. 어쨌든 목적은 Control, View와 Function을 다른 파일에 나누어 구성하는 것입니다. 1. lorca_ex.go(Control파일) 앱의 시작부분으로 Control에 해당하는 역할을 합니다. 함수 바인딩을 이곳에서 정의합니다. 그리고 index.html을 불러와서 data에 저장한 뒤 url.PathEscape메서드에 string형태의 인자로 넘겨주는 방식으로 수정해 주었습니다. package main import ( "io/ioutil" "net/url" "github.com/zserge/lorca" ) var ui .. 2020. 12. 9.
Go언어 - Lorca GUI 라이브러리 Go 언어로 구현된 라이브러리들도 상당히 많습니다. (https://github.com/avelino/awesome-go#gui). 이전에 Fyne, Gotk3, andlabs/ui, sciter 에 대해서 포스팅한 적이 있는데요...최대한 설치할 것들이 적고 쉽게 구축 가능한 라이브러리들을 찾아보고 있었습니다. 그러던 중 Lorca라는 것을 발견했는데요. 오늘은 이 Lorca 를 한번 사용해보겠습니다. Lorca는 HTML 문법을 사용하여 매우 쉽게 UI를 구성할 수 있다는 장점이 있습니다. 비슷하게는 Webview가 있는데, 가볍고 build된 파일도 용량이 매우 작지만 설치시 조금 애로가 있을 수 있고, 세부설정도 Lorca보다는 조금 어렵다고 합니다. 반대로 얘기하면, Lorca는 설정할 수 있는.. 2020. 12. 8.
Go언어- Gin Framework(1강 설치) Golang에는 웹 프레임워크가 여러가지 있습니다. 제가 공부했던 책에서는 Beego가 추천되었는데, 그 외에도 Revel, Martini, Buffalo, echo, iris 등 여러가지가 있습니다. 요즘은 gin이라는 프레임워크가 대세인 것 같아서 설치해볼까 합니다. https://github.com/gin-gonic/gin(Gin 소스 페이지) 우선 아래 명령어로 Gin을 설치합니다. go get -u github.com/gin-gonic/gin 그리고 프로젝트를 생성해보겠습니다. 적당한 폴더를 하나 만들어 주고 Go 파일을 하나 작성해줍니다. 저는 그냥 main.go로 만들었습니다. package main import "github.com/gin-gonic/gin" func main() { r :.. 2020. 12. 8.
Go언어 - MySQL 연동 package main import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" ) func checkError(err error) { if err != nil { panic(err) } } func main() { var name, email, phone string db, err := sql.Open("mysql", "root:1234@tcp(127.0.0.1:3306)/testdb") checkError(err) defer db.Close() fmt.Println("connect success") rows, err := db.Query("SELECT name, email, phone FROM members where id=?", 6) che.. 2020. 12. 6.
Go언어 - 소스코드 모듈화 보통 프로그램이 커질수록 파일을 기능별로 분리 관리를 하죠. Go 언어에서도 파일 분리/관리 방법이 있습니다만 오늘은 이것 때문에 삽질을 좀 많이 했네요. 역시 기초부터 제대로 공부하고 써먹어야한다는 생각을 절실히 체감하는 오늘입니다. 1. 같은 package 안에서는 함수, 메서드 등의 이름 첫글자가 소문자여도 사용이 가능합니다. (non-public) 폴더 구분없이 파일만 구분해서 사용하고 싶을 경우, 같은 패키지(현재 main)으로 하고, 함수이름 첫글자 소문자(my_plus)일 경우 문제없이 인식 가능합니다. (import 같은 기능 필요 없음) 2. 다른 패키지로 관리할 때, 즉 폴더별로 관리할 경우 주의해야 할 사항이 몇가지 있어서 정리를 할까 합니다. 1) 함수, 메서드 등의 이름 첫글자가 .. 2020. 12. 6.
Flask강좌6 - 등록/로그인/로그아웃 지금까지 DB 검색 기능에 대해 만들었으나, 사용자 등록, 로그인, 로그아웃 처리를 위해 대대적인 수정이 있겠습니다. 1. users 테이블 구성 우선 시작은 Database 구성부터 하도록 하겠습니다. 지난 members 테이블과는 별도로 사용자 관리를 위한 users 테이블을 생성하도록 하겠습니다. 2.user_model.py 데이터베이스 테이블에 맞춰 User클래스를 생성합니다. 정보는 ID, 이름, 비번이 되겠습니다. from flask_sqlalchemy import SQLAlchemy from datetime import datetime db = SQLAlchemy() class User(db.Model): __tablename__ = 'users' #테이블 이름 : users id = db... 2020. 12. 4.
Flask강좌5 - Flask form입력 form을 이용해 입력을 받고, 처리하여, 다시 결과를 보여주는 로직을 구현하겠습니다. 1. localhost:5000/all의 db.html 화면에서 입력 받고, 2. __init__.py에서 라우팅 처리하고, 3. db.html에 결과를 보여줍니다. 1. __init__.py form 으로부터 전달된 이름('nm')을 받아서 temp 변수에 저장하고, query.filter_by로 DB에서 조회한 후, 결과를 members로 저장합니다. 그리고 members의 갯수를 count에 저장합니다. render_template함수를 통해 db.html로 연결이 되는데, 이때 members와 count를 함께 넘겨줍니다. from flask import Flask, render_template, request.. 2020. 12. 3.
반응형