8000 close #6 · moktadirul-raju/DjangoBlog@8ac5e1a · GitHub
[go: up one dir, main page]

Skip to content

Commit 8ac5e1a

Browse files
committed
close #6
1 parent 6d41cac commit 8ac5e1a

27 files changed

+127
-24
lines changed
78 Bytes
Binary file not shown.
447 Bytes
Binary file not shown.
56 Bytes
Binary file not shown.
670 Bytes
Binary file not shown.

backend/admin.py

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
11
from django.contrib import admin
2+
from .models import BlogSettings
23

34
# Register your models here.
5+
admin.site.register(BlogSettings)

backend/migrations/0001_initial.py

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Generated by Django 2.1.4 on 2019-02-16 11:00
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
initial = True
9+
10+
dependencies = [
11+
]
12+
13+
operations = [
14+
migrations.CreateModel(
15+
name='BlogSettings',
16+
fields=[
17+
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
18+
('site_icon', models.ImageField(upload_to='icons')),
19+
('site_logo', models.ImageField(upload_to='logos')),
20+
('site_title', models.CharField(max_length=200)),
21+
('tagline', models.CharField(max_length=200)),
22+
('keywords', models.CharField(max_length=200)),
23+
('description', models.CharField(max_length=200)),
24+
('post_per_page', models.IntegerField(default=5)),
25+
],
26+
),
27+
]
Binary file not shown.

backend/models.py

+8
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
11
from django.db import models
22

33
# Create your models here.
4+
class BlogSettings(models.Model):
5+
site_icon = models.ImageField(upload_to='icons')
6+
site_logo = models.ImageField(upload_to='logos')
7+
site_title = models.CharField(max_length=200)
8+
tagline = models.CharField(max_length=200)
9+
keywords = models.CharField(max_length=200)
10+
description = models.CharField(max_length=200)
11+
post_per_page = models.IntegerField(default=5)

backend/urls.py

+1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
path('categories/', views.categories, name='categories'),
2121
path('add_new_category', views.add_new_category, name="add_new_category"),
2222
path('settings/', views.settings, name='settings'),
23+
path('update_settings/', views.update_settings, name='update_settings'),
2324
path('profile/', views.profile, name='profile'),
2425

2526
]

backend/views.py

+31-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from django.shortcuts import render, redirect
22
from django.http import HttpResponse
33
from blog.models import Post, Comment, Reply, UserProfileInfo,Tag,Category
4+
from .models import BlogSettings
45
from blog.forms import UserForm,UserProfileInfoForm, PostForm
56
from django.core.paginator import Paginator
67
from django.contrib.auth import authenticate, login, logout
@@ -216,7 +217,36 @@ def add_new_category(request):
216217

217218
def settings(request):
218219

219-
return render(request, 'backend/settings.html')
220+
settings = BlogSettings.objects.get(id=1)
221+
my_dict = {'settings':settings}
222+
return render(request, 'backend/settings.html', context=my_dict)
223+
224+
225+
226+
def update_settings(request):
227+
if request.method == "POST":
228+
icon = request.FILES.get('icon')
229+
logo = request.FILES.get('logo')
230+
title = request.POST.get('title')
231+
tagline = request.POST.get('tagline')
232+
keywords = request.POST.get('keywords')
233+
description = request.POST.get('description' F987 )
234+
post_per_page = request.POST.get('post_per_page')
235+
236+
237+
238+
settings = BlogSettings.objects.get(id=1)
239+
240+
settings.site_icon = icon
241+
settings.site_logo = logo
242+
settings.site_title = title
243+
settings.tagline = tagline
244+
settings.keywords = keywords
245+
settings.description = description
246+
settings.post_per_page = post_per_page
247+
settings.save()
248+
249+
return HttpResponseRedirect(reverse('backend:settings'))
220250

221251
def profile(request):
222252
profile = UserProfileInfo.objects.get(user=request.user)
443 Bytes
Binary file not shown.

blog/context_processors.py

+22
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from blog.models import Post, UserProfileInfo,Tag,Category
2+
from backend.models import BlogSettings
23
from django.contrib.auth.models import User
34
from django.contrib.auth.decorators import login_required
45

@@ -23,6 +24,27 @@ def post_widget(request):
2324
'categories':categories
2425
}
2526

27+
def site_settings(request):
28+
settings = BlogSettings.objects.get(id=1)
29+
30+
site_icon = settings.site_icon
31+
site_logo = settings.site_logo
32+
site_title = settings.site_title
33+
tagline = settings.tagline
34+
keywords = settings.keywords
35+
description = settings.description
36+
post_per_page = settings.post_per_page
37+
38+
return {
39+
'site_icon':site_icon,
40+
'site_logo':site_logo,
41+
'site_title':site_title,
42+
'tagline':tagline,
43+
'keywords':keywords,
44+
'description':description,
45+
'post_per_page':post_per_page
46+
}
47+
2648

2749
# @login_required
2850
# def user_profile_info(request):
43 Bytes
Binary file not shown.

blog_engine/settings.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
'django.contrib.staticfiles',
4343
'blog',
4444
'backend',
45-
45+
4646
]
4747

4848
MIDDLEWARE = [
@@ -69,6 +69,7 @@
6969
'django.contrib.auth.context_processors.auth',
7070
'django.contrib.messages.context_processors.messages',
7171
'blog.context_processors.post_widget',
72+
'blog.context_processors.site_settings',
7273
# 'blog.context_processors.user_profile_info',
7374
],
7475
},

db.sqlite3

8 KB
Binary file not shown.

media/icons/ramanujan.jpg

63 KB
Loading

media/icons/ramanujan_7DYxCRn.jpg

63 KB
Loading

media/icons/ramanujan_cX3iuNr.jpg

63 KB
Loading

media/icons/ramanujan_gjQ2BAG.jpg

63 KB
Loading
Loading
Loading

media/logos/ramanujan.jpg

63 KB
Loading

media/logos/ramanujan_SciBV3d.jpg

63 KB
Loading
63 KB
Loading

templates/backend/base.html

+7-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,13 @@
33
<html lang="us">
44
<head>
55
<meta charset="utf-8">
6-
<title>DjangoBlog</title>
6+
<meta name="description" content="{{description}}">
7+
<meta name="keywords" content="{{keywords}}">
8+
<meta name="author" content="xHacker404">
9+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
10+
11+
<title>{{site_title}} | {{ tagline }}</title>
12+
<link rel="icon" href="/media/{{site_icon}}" type="image/gif" sizes="16x16">
713
<link href="{% static "css/bootstrap.min.css" %}"rel="stylesheet" type="text/css">
814
<link href="{% static "css/jquery-ui.css" %}" rel="stylesheet">
915
<link type="text/css" rel="stylesheet" href="https://cdn.jsdelivr.net/jquery.jssocials/1.4.0/jssocials.css" />

templates/backend/settings.html

+11-11
Original file line numberDiff line numberDiff line change
@@ -4,45 +4,45 @@
44
<div class="col-md-4">
55

66
<div class="post">
7-
<form method="post" action="{% url 'backend:settings'%}">
7+
<form method="post" action="{% url 'backend:update_settings'%}">
88
{% csrf_token %}
99
<div class="form-group">
< 10000 code>10-
<img src="images/me.jpg" alt="Icon" id="icon" width="200px;" height="200px;" >
11-
<input type="file" id="file" value="change blog icon" onchange="readURL(this);" class="form-control" style="width:200px; margin-top:11px;">
10+
<img src="/media/{{settings.site_icon}}" alt="Icon" id="icon" width="50px;" height="50px;" >
11+
<input type="file" name="icon" id="icon" value="/media/{{settings.site_icon}}" accept="image/*" onchange="readURL(this);" class="form-control" style="width:200px; margin-top:11px;">
1212
</div>
1313
<div class="form-group">
14-
<img src="images/me.jpg" alt="Logo" id="logo" width="200px;" height="200px;" >
15-
<input type="file" id="file" value="change blog logo" onchange="readURL(this);" class="form-control" style="width:200px; margin-top:11px;">
14+
<img src="/media/{{settings.site_logo}}" alt="Logo" id="logo" width="50px;" height="50px;" >
15+
<input type="file" name="logo" id="logo" value="/media/{{settings.site_logo}}" accept="image/*" onchange="readURL(this);" class="form-control" style="width:200px; margin-top:11px;">
1616
</div>
1717

1818

1919
<div class="form-group">
2020
<label for="name">Blog Title:</label>
21-
<input type="text" class="form-control" name="title" id="title" value="Django Blog">
21+
<input type="text" class="form-control" name="title" id="title" value="{{settings.site_title}}">
2222
</div>
2323

2424
<div class="form-group">
2525
<label for="name">Blog Tagline:</label>
26-
<input type="text" class="form-control" name="tagline" id="tagline" value="Just another DjangoBlog site">
26+
<input type="text" class="form-control" name="tagline" id="tagline" value="{{settings.tagline}}">
2727
</div>
2828

2929
<div class="form-group">
3030
<label for="name">Meta:Keywords</label>
31-
<input type="text" class="form-control" name="tagline" id="Keywords" value="python, django, blog">
31+
<input type="text" class="form-control" name="keywords" id="Keywords" value="{{settings.keywords}}">
3232
</div>
3333
<div class="form-group">
3434
<label for="name">Meta:Description</label>
35-
<input type="text" class="form-control" name="tagline" id="description" value="This is blog site for python related topcis">
35+
<input type="text" class="form-control" name="description" id="description" value="{{settings.description}}">
3636
</div>
3737

3838
<div class="form-group">
3939
<label for="name">Post per page</label>
40-
<input type="number" class="form-control" name="tagline" id="post_per_page" value="5">
40+
<input type="number" class="form-control" name="post_per_page" id="post_per_page" value="{{settings.post_per_page}}">
4141
</div>
4242

4343

4444

45-
<input type="submit" value="Save" class="btn btn-primary">
45+
<input type="submit" value="Update" class="btn btn-primary">
4646

4747
</form>
4848

templates/blog/base.html

+16-10
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,22 @@
33
<html lang="us">
44
<head>
55
<meta charset="utf-8">
6-
<title>Django Blog</title>
7-
<link href="{% static "css/bootstrap.min.css" %}"rel="stylesheet" type="text/css">
8-
<link href="{% static "css/jquery-ui.css" %}" rel="stylesheet">
9-
<link type="text/css" rel="stylesheet" href="https://cdn.jsdelivr.net/jquery.jssocials/1.4.0/jssocials.css" />
10-
<link type="text/css" rel="stylesheet" href="https://cdn.jsdelivr.net/jquery.jssocials/1.4.0/jssocials-theme-classic.css"/>
11-
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
12-
<link href="{% static "css/style.css" %}" rel="stylesheet" type="text/css">
13-
<style type="text/css">
14-
15-
</style>
6+
<meta name="description" content="{{description}}">
7+
<meta name="keywords" content="{{keywords}}">
8+
<meta name="author" content="xHacker404">
9+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
10+
11+
<title>{{site_title}} | {{ tagline }}</title>
12+
<link rel="icon" href="/media/{{site_icon}}" type="image/gif" sizes="16x16">
13+
<link href="{% static "css/bootstrap.min.css" %}"rel="stylesheet" type="text/css">
14+
<link href="{% static "css/jquery-ui.css" %}" rel="stylesheet">
15+
<link type="text/css" rel="stylesheet" href="https://cdn.jsdelivr.net/jquery.jssocials/1.4.0/jssocials.css" />
16+
<link type="text/css" rel="stylesheet" href="https://cdn.jsdelivr.net/jquery.jssocials/1.4.0/jssocials-theme-classic.css"/>
17+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
18+
<link href="{% static "css/style.css" %}" rel="stylesheet" type="text/css">
19+
<style type="text/css">
20+
21+
</style>
1622
</head>
1723
<body>
1824
<div class="row">

0 commit comments

Comments
 (0)
0