[내일배움캠프_TIL]2023.04.11-22일차

yell·2023년 4월 11일
0

Today

#🔛자료구조, 알고리즘 강의 수강

#🔛코딩테스트 연습(Lv.0)

#🔛Python Django 실무 기초 강의 수강

#🔛🍕Python Django 프로젝트1


SECRET_KEY🔑

- problem: Django 개인과제 push 후, Git에서 내가 올린 파일이 시크릿키를 포함하고 있어서 위험하다는 식의 메일을 받았다.

- try: 처음에는 급한 마음에 git에 push한 파일 속 시크릿키를 그냥 삭제해버렸다. 그랬더니 프로그램이 제대로 동작을 하지 못했다. django-dotenv 사용하여 시크릿키를 숨기고, 이미 노출된 시크릿키값도 새로 변경하는 방법을 시도했다.

# django-dotenv 사용
pip install django-dotenv

# freeze
pip freeze > requirements.txt

# settings.py; SECRET_KEY 코드를 변경
import os

SECRET_KEY = os.environ.get('SECRET_KEY')

# manage.py; dotenv불러오기
import dotenv

if __name__ == '__main__':
	dotenv.read_dotenv()
	main()

# 새로운 SECRET_KEY 랜덤 생성 코드 ; 터미널에서 실행
python -c 'from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())'

# .env에 SECRET_KEY 저장
SECRET_KEY = '~~~비밀~~~'

# .gitignore에 .env 넣기

⚠️Pycharm 가상환경설정

파이참 가상환경 설정
- problem:
- try:


💲Git Branch생성 & Pull requests

  • Branch
  # 브랜치 생성
  $ git branch 브랜치명

  # 원하는 브랜치로 이동
  $ git checkout 브랜치

  # 브랜치 생성 및 이동
  $ git checkout -b 브랜치명

  # 브랜치 삭제
  $ git branch -D 브랜치명

  # 브랜치에 pull; 


  # 브랜치에 push
  $ git log
  $ git add . 
  $ git commit -m '메세지'
  $ git push origin 브랜치명

  # 브랜치 병합
  $ git merge master에 병합시킬 브랜치명

🖇️브랜치 참고) https://mylko72.gitbooks.io/git/content/branch/checkout.html

  • Pull requests
    : git에서 포크한 레파지토리에 생성한 브랜치로 들어가서 원래는 Compare & pull reqeust라고 생긴 버튼을 통해서 해야하는데 그 버튼이 생성되지 않아서

    contribute의 Open pull request버튼을 통해 Pull requests를 시도해서 성공했다!

🔛Posting 페이지

- posting 앱 생성


- PostingModel 생성

class PostingModel(models.Model):
    class Meta:
        db_table = "my_posting"

    img = "../templates/img/thumbnail.png"

    # user_id = models.ForeignKey(UserModel, on_delete=models.CASCADE)
    author = models.ForeignKey(UserInfo, on_delete=models.CASCADE)
    title = models.CharField(max_length=256)
    thumbnail = models.TextField(default=img)
    content = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

- views.py

def posting_view(request):
    if request.method == 'GET':
        user = request.user.is_authenticated
        if user:
            return render(request, 'posting/posting.html')
        else:
            return redirect('/api/sign-in')

    elif request.method == 'POST':
            posting_user = request.user
            author = posting_user
            title = request.POST.get('title','')
            thumbnail = request.POST.get('thumbnail','')
            content = request.POST.get('content','')

            if title == '':
                return render(request, 'posting/posting.html', {'error': '제목을 작성해주세요!'})
            elif content == '':
                return render(request, 'posting/posting.html', {'error': '내용을 작성해주세요!'})
            else:
                PostingModel.objects.create(author=author,title=title,thumbnail=thumbnail, content=content)
                
                return redirect('/api/posting-detail')


def posting_detail_view(request,id):
    if request.method == 'GET':
        select_posting = PostingModel.objects.get(id=id)

        return render(request, 'posting/posting_detail.html', {'select_posting': select_posting})

    elif request.method == 'POST':

        return redirect('/api/posting-detail/'+str(id))

- urls.py

urlpatterns = [

    path('', views.home_view, name='home'), # 127.0.0.1:8000 과 views.py 폴더의 home 함수 연결
    path('api/posting/', views.posting_view, name='posting'),
    path('api/posting-detail/<int:id>', views.posting_detail_view, name='posting_detail'),
    path('api/mypage/<str:username>', views.mypage_list_view, name='mypage'),
]
profile
...

0개의 댓글