blog detail working

This commit is contained in:
Sharad Ahlawat 2020-03-08 23:42:03 -07:00
parent a87dd68bc7
commit c78b0261ec
10 changed files with 135 additions and 17 deletions

View File

@ -1,7 +1,4 @@
from django.contrib import admin from django.contrib import admin
# Register your models here.
from .models import Blog from .models import Blog
admin.site.register(Blog) admin.site.register(Blog)

View File

@ -1,11 +1,18 @@
from django.db import models from django.db import models
import datetime
# Create your models here.
class Blog(models.Model): class Blog(models.Model):
title = models.CharField(max_length=200) title = models.CharField(max_length=200)
pubdate = models.DateTimeField() pubdate = models.DateTimeField()
body = models.TextField(max_length=1000) body = models.TextField(max_length=1000)
image = models.ImageField(upload_to='images/') image = models.ImageField(upload_to='images/')
def __str__(self):
return self.title
def summary(self):
return self.body[:100]
def pubdate_pretty(self):
return self.pubdate.strftime('%b %e %Y')

View File

@ -0,0 +1,101 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content="">
<meta name="author" content="Mark Otto, Jacob Thornton, and Bootstrap contributors">
<meta name="generator" content="Jekyll v3.8.6">
<title>Album example · Bootstrap</title>
<link rel="canonical" href="https://getbootstrap.com/docs/4.4/examples/album/">
<!-- Bootstrap core CSS -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"
integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
<!-- Favicons -->
<link rel="apple-touch-icon" href="/docs/4.4/assets/img/favicons/apple-touch-icon.png" sizes="180x180">
<link rel="icon" href="/docs/4.4/assets/img/favicons/favicon-32x32.png" sizes="32x32" type="image/png">
<link rel="icon" href="/docs/4.4/assets/img/favicons/favicon-16x16.png" sizes="16x16" type="image/png">
<link rel="manifest" href="/docs/4.4/assets/img/favicons/manifest.json">
<link rel="mask-icon" href="/docs/4.4/assets/img/favicons/safari-pinned-tab.svg" color="#563d7c">
<link rel="icon" href="/docs/4.4/assets/img/favicons/favicon.ico">
<meta name="msapplication-config" content="/docs/4.4/assets/img/favicons/browserconfig.xml">
<meta name="theme-color" content="#563d7c">
<style>
.bd-placeholder-img {
font-size: 1.125rem;
text-anchor: middle;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
@media (min-width: 768px) {
.bd-placeholder-img-lg {
font-size: 3.5rem;
}
}
</style>
<!-- Custom styles for this template -->
<link href="album.css" rel="stylesheet">
</head>
<body>
<header>
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
<a class="navbar-brand" href="#">Portfolio</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavAltMarkup"
aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNavAltMarkup">
<div class="navbar-nav" ml-auto>
<a class="nav-item nav-link" href="#">Twitter</a>
<a class="nav-item nav-link" href="#">Resume</a>
<a class="nav-item nav-link active" href="#">Blog</a>
</div>
</div>
</nav>
</header>
<main role="main">
<div class="container">
<h1 class="text-center pt-3">Sharad's Blog</h1>
<br/>
<br/>
<h2>Latest Posts</h2>
<hr/>
<div>
{% for blog in blogs.all %}
<h3><a href="">{{ blog.title }}</a></h3>
{{ blog.pubdate_pretty }}
<br />
<img class=img-fluid src="{{ blog.image.url }}" height="200" width="200" />
<br />
<p>{{ blog.summary }}</p>
<hr />
{% endfor %}
</div>
</div>
</main>
<footer class="text-muted">
<div class="container text-center">
<p>(c) Sharad Ahlawat {% now "Y" %}</p>
</div>
</footer>
<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js"
integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n"
crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"
integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo"
crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"
integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6"
crossorigin="anonymous"></script>
</body>
</html>

View File

@ -0,0 +1 @@
{{ blog.title }}

7
blog/urls.py Normal file
View File

@ -0,0 +1,7 @@
from django.urls import path
from . import views
urlpatterns = [
path('', views.allblogs, name='allblogs'),
path('<int:blog_id>/', views.detail, name='detail'),
]

View File

@ -1,3 +1,12 @@
from django.shortcuts import render from django.shortcuts import render, get_object_or_404
from .models import Blog
# Create your views here.
def allblogs(request):
blogs = Blog.objects
return render(request, 'blog/allblogs.html', {'blogs': blogs})
def detail(request, blog_id):
blog = get_object_or_404(Blog, pk=blog_id)
return render(request, 'blog/detail.html', {'blog': blog})

View File

@ -1,7 +1,4 @@
from django.contrib import admin from django.contrib import admin
# Register your models here.
from .models import Job from .models import Job
admin.site.register(Job) admin.site.register(Job)

View File

@ -1,8 +1,9 @@
from django.db import models from django.db import models
# Create your models here.
class Job(models.Model): class Job(models.Model):
image = models.ImageField(upload_to='images/') image = models.ImageField(upload_to='images/')
summary = models.CharField(max_length=200) summary = models.CharField(max_length=200)
def __str__(self):
return self.summary

View File

@ -1,10 +1,7 @@
from django.shortcuts import render from django.shortcuts import render
from .models import Job from .models import Job
# Create your views here.
def home(request): def home(request):
jobs = Job.objects jobs = Job.objects
return render(request, 'jobs/home.html', {'jobs': jobs}) return render(request, 'jobs/home.html', {'jobs': jobs})

View File

@ -14,7 +14,7 @@ Including another URLconf
2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) 2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
""" """
from django.contrib import admin from django.contrib import admin
from django.urls import path from django.urls import include, path
from django.conf import settings from django.conf import settings
from django.conf.urls.static import static from django.conf.urls.static import static
import jobs.views import jobs.views
@ -22,4 +22,5 @@ import jobs.views
urlpatterns = [ urlpatterns = [
path('admin/', admin.site.urls), path('admin/', admin.site.urls),
path('', jobs.views.home, name='home'), path('', jobs.views.home, name='home'),
path('blog/', include('blog.urls')),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)