https://guides.codepath.com/ios/Using-Git-with-Terminal
$ sudo add-apt-repository ppa:git-core/ppa -y
$ sudo apt-get update
$ sudo apt-get install git -y
Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.
-> 터미널에서 원격리포로 푸쉬를하는데 로그인을 했더니 계속 오류가 났다
패스워드 인증방식이 아니라 토큰/ssh을 만들어서 인증하면 더이상 경고창이 뜨지 않는다!
토큰 발급받는 방법:
github settings -> developer settings -> personal access tokens -> generate new token -> repo, admin:repo_hook, gist, user, delete_repo 체크 ✅ -> ⭐️토큰 복사(다시 못봄!)⭐️
참고) https://medium.com/@joongwon/git-git-명령어-정리-c25b421ecdbd
# tweet/views.py
@login_required # 로그인하지 않으면 접근할 수 없음
def tweet(request):
if request.method == 'GET': # 요청하는 방식이 GET 방식인지 확인하기
all_tweet = TweetModel.objects.all().order_by('-created_at')
return render(request, 'tweet/home.html', {'tweet': all_tweet})
elif request.method == 'POST': # 요청 방식이 POST 일때
user = request.user # 현재 로그인 한 사용자를 불러오기
content = request.POST.get('my-content', '') #글 작성이 되지 않았다면 빈칸으로
if content == '': # 글이 빈칸이면 기존 tweet과 에러를 같이 출력
all_tweet = TweetModel.objects.all().order_by('-created_at')
return render(request, 'tweet/home.html', {'error': '글은 공백일 수 없습니다', 'tweet': all_tweet})
else:
my_tweet = TweetModel.objects.create(author=user, content=content) # 글 저장을 한번에!
my_tweet.save()
return redirect('/tweet')
<form action="/tweet/" method="post">
{% csrf_token %}
{% if error %}
<div class="alert alert-danger" role="alert">
{{ error }}
</div>
{% endif %}
{% if user.is_authenticated %}
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav mr-auto">
<li class="nav-item">
<a class="nav-link" href="/user"> 친구 <span class="sr-only"></span></a>
</li>
</ul>
</div>
{% endif %}
-> 네비게이션 바의 <친구> 부분을 로그인한 경우로 감싸줌
pip install django-taggit
pip install django-taggit-templatetags2
(preference에서 인터프리터로도 설치가능)
TAGGIT_CASE_INSENSITIVE = True
TAGGIT_LIMIT = 50
from taggit.managers import TaggableManager
class TweetModel(models.Model):
...
tags = TaggableManager(blank=True)
-> (blank=True)는 비어있어도 작동하겠단 뜻
-> 모델이 변경되어서 makemigrations/migrate 해서 db에 반영시켜줌
elif request.method == 'POST':
...
tags = request.POST.get('tag', '').split(',')
else:
my_tweet = TweetModel.objects.create(author=user, content=content)
for tag in tags:
tag = tag.strip() # 공백제거
if tag != '': # 태그를 작성하지 않았을 경우에 저장하지 않기 위해서
my_tweet.tags.add(tag)
my_tweet.save()
-> post방식일 때 받는 변수가 추가되었으므로(tags) html에서 받아와야함
-> tweet/home.html 수정
# tweet/views.py(태그함수추가)
from django.views.generic import ListView, TemplateView
### 중간 생략 #############
class TagCloudTV(TemplateView):
template_name = 'taggit/tag_cloud_view.html'
class TaggedObjectLV(ListView):
template_name = 'taggit/tag_with_post.html'
model = TweetModel
def get_queryset(self):
return TweetModel.objects.filter(tags__name=self.kwargs.get('tag'))
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['tagname'] = self.kwargs['tag']
return context
# tweet/urls.py(url추가)
path('tag/', views.TagCloudTV.as_view(), name='tag_cloud'),
path('tag/<str:tag>/', views.TaggedObjectLV.as_view(), name='tagged_object_list'),
git init (깃과 연동하는 폴더로 만들기)
git add . (이 경로에 있는 파일 다 올림)
git commit -m '커밋내용'
git branch -M main
git remote add origin https://github.com/hyojine/mySpartaSNS.git
git push -u origin main