diff --git a/Pipfile b/Pipfile new file mode 100644 index 0000000..eefe101 --- /dev/null +++ b/Pipfile @@ -0,0 +1,12 @@ +[[source]] +name = "pypi" +url = "https://pypi.org/simple" +verify_ssl = true + +[dev-packages] + +[packages] +django = "*" + +[requires] +python_version = "3.4" diff --git a/Pipfile.lock b/Pipfile.lock new file mode 100644 index 0000000..ce6b24c --- /dev/null +++ b/Pipfile.lock @@ -0,0 +1,36 @@ +{ + "_meta": { + "hash": { + "sha256": "23352d0caa8a998fd1aa16bb3d43d9d9609440510985a868e7eb1ff30f225e47" + }, + "pipfile-spec": 6, + "requires": { + "python_version": "3.4" + }, + "sources": [ + { + "name": "pypi", + "url": "https://pypi.org/simple", + "verify_ssl": true + } + ] + }, + "default": { + "django": { + "hashes": [ + "sha256:665457d4146bbd34ae9d2970fa3b37082d7b225b0671bfd24c337458f229db78", + "sha256:bde46d4dbc410678e89bc95ea5d312dd6eb4c37d0fa0e19c9415cad94addf22f" + ], + "index": "pypi", + "version": "==2.0.13" + }, + "pytz": { + "hashes": [ + "sha256:303879e36b721603cc54604edcac9d20401bdbe31e1e4fdee5b9f98d5d31dfda", + "sha256:d747dd3d23d77ef44c6a3526e274af6efeb0a6f1afd5a69ba4d5be4098c8e141" + ], + "version": "==2019.1" + } + }, + "develop": {} +} diff --git a/db.sqlite3 b/db.sqlite3 index b21f691..246099f 100644 Binary files a/db.sqlite3 and b/db.sqlite3 differ diff --git a/manage.py b/manage.py index 15a3ec9..480dfd5 100755 --- a/manage.py +++ b/manage.py @@ -11,5 +11,5 @@ "Couldn't import Django. Are you sure it's installed and " "available on your PYTHONPATH environment variable? Did you " "forget to activate a virtual environment?" - ) from exc + ) execute_from_command_line(sys.argv) diff --git a/share/admin.py b/share/admin.py index 0cf2438..5085689 100644 --- a/share/admin.py +++ b/share/admin.py @@ -1,5 +1,6 @@ from django.contrib import admin -from .models import Content, Tag + +from .models import Content, Tag, User # Register your models here. admin.site.register(Content) -admin.site.register(Tag) \ No newline at end of file +admin.site.register(Tag) diff --git a/share/migrations/0001_initial.py b/share/migrations/0001_initial.py index e510f11..b0cbee3 100644 --- a/share/migrations/0001_initial.py +++ b/share/migrations/0001_initial.py @@ -1,6 +1,8 @@ -# Generated by Django 2.0.13 on 2019-05-05 10:41 +# Generated by Django 2.0.13 on 2019-05-05 17:38 +from django.conf import settings from django.db import migrations, models +import django.db.models.deletion class Migration(migrations.Migration): @@ -8,6 +10,7 @@ class Migration(migrations.Migration): initial = True dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ @@ -23,6 +26,19 @@ class Migration(migrations.Migration): ('updated_at', models.DateTimeField(auto_now=True)), ], ), + migrations.CreateModel( + name='Like', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ], + ), + migrations.CreateModel( + name='Post', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('like_user_set', models.ManyToManyField(blank=True, related_name='like_user_set', through='share.Like', to=settings.AUTH_USER_MODEL)), + ], + ), migrations.CreateModel( name='Tag', fields=[ @@ -30,6 +46,16 @@ class Migration(migrations.Migration): ('name', models.CharField(max_length=140, unique=True)), ], ), + migrations.AddField( + model_name='like', + name='post', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='share.Post'), + ), + migrations.AddField( + model_name='like', + name='user', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), + ), migrations.AddField( model_name='content', name='tag_set', diff --git a/share/models.py b/share/models.py index 026abb5..1deb233 100644 --- a/share/models.py +++ b/share/models.py @@ -1,5 +1,6 @@ from django.db import models -from django import forms +from django.contrib.auth.models import User +from django.conf import settings # Create your models here. class Content(models.Model): @@ -16,4 +17,17 @@ def __str__(self): return self.title class Tag(models.Model): - name = models.CharField(max_length=140, unique=True) \ No newline at end of file + name = models.CharField(max_length=140, unique=True) + + +class Post(models.Model): + like_user_set = models.ManyToManyField(User, blank=True, related_name='like_user_set', through='Like') + + @property + def like_count(self): + return self.like_user_set.count() + + +class Like(models.Model): + post = models.ForeignKey(Post, on_delete=models.CASCADE) + user = models.ForeignKey(User, on_delete=models.CASCADE) \ No newline at end of file diff --git a/share/templates/board.html b/share/templates/board.html index 5f7f1d9..288dba2 100644 --- a/share/templates/board.html +++ b/share/templates/board.html @@ -15,8 +15,47 @@
{{ post.like_count }}개
++ {% for like_user in post.like_user_set.all %} + {{ like_user.profile.nickname }} + {% endfor %} +
+좋아요