Reputation: 9
This is test.py
from django.http import HttpResponse
import mysql.connector
MySQLdb = mysql.connector
host = 'xxxxxx'
username = 'xxxx'
db = 'xxxx'
port = '3306'
password = 'xxxxxx'
class sql:
def __int__(self):
pass
def mysql_connection(self):
try:
mysql_conn = mysql.connector.connect(host=host, user=username,
database=db, password=password,
port=port, ssl_disabled=True)
print("Connection Successfully Established...")
return mysql_conn
except Exception as e:
print("mysql connection error".format(e))
exit(0)
def update_approval(self, que):
d = self.mysql_connection()
cursor = d.cursor()
cursor.execute(que)
result = cursor.fetchone()
return result
This is my views.py
from django.shortcuts import render, redirect
from .forms import InputForm, TestForm
from django.core.mail import send_mail
from .test import sql
import mysql.connector
MySQLdb = mysql.connector
def index(request):
if request.method == "POST":
form = InputForm(request.POST)
# ids = form["git_Id"].value()
# print(ids)
# query = f'SELECT request_id FROM request_form_mymodel where git_Id={ids};'
#
# p = obj.update_approval(query)
obj = sql()
# git_id = 5666
ids = form.data["git_Id"]
print(ids)
# query = "SELECT request_id FROM request_form_db.request_form_mymodel where git_Id='%s'" % ids
q = "SELECT request_id FROM request_form_db.request_form_mymodel where git_Id={}".format(ids)
p = obj.update_approval(q)
print(p)
approve_url = f"http://my_url_path/test?request_id={p}"
if form.is_valid():
send_mail(
'KSA Test Activation',
approve_url,
'my_sender_email_id',
['receiver_id'],
fail_silently=False,
)
form.save()
form = InputForm()
else:
form = InputForm()
return render(request, 'home.html', {'form': form})
This is forms.py `
from django import forms
from .models import MyModel, TestModel
class InputForm(forms.ModelForm):
class Meta:
model = MyModel
fields = ["git_Id", "git_Response"]
This is models.py
from django.db import models
import uuid
# Create your models here.
class MyModel(models.Model):
git_Id = models.CharField(max_length=200)
git_Response = models.CharField(max_length=200)
is_approved = models.IntegerField()
request_id = models.UUIDField(primary_key=False,
default=uuid.uuid4,
editable=False,
unique=True)
Here i got output on email link : http://path_of_my_url/test/?request_id=None
the request_id stored in database by generating UUID. But i am facing issue to getting request id in url .it always returns none on url. But when i run test.py by creating object on sql class and run function that is return perfectly. please help me out in this issue.
Upvotes: 1
Views: 112
Reputation: 8837
Use form.cleaned_data["git_Id"]
after calling form.is_valid()
so:
def index(request):
if request.method == "POST":
form = InputForm(request.POST)
if form.is_valid():
obj = sql()
# git_id = 5666
ids = form.cleaned_data["git_Id"]
print(ids)
# query = "SELECT request_id FROM request_form_db.request_form_mymodel where git_Id='%s'" % ids
q = "SELECT request_id FROM request_form_db.request_form_mymodel where git_Id={}".format(ids)
p = obj.update_approval(q)
print(p)
approve_url = f"http://my_url_path/test?request_id={p}"
send_mail(
'KSA Test Activation',
approve_url,
'my_sender_email_id',
['receiver_id'],
fail_silently=False,
)
form.save()
return redirect("some_view_name_to_redirect")
else:
form = InputForm()
return render(request, 'home.html', {'form': form})
According to docs:
you should always return an HttpResponseRedirect after successfully dealing with POST data. This tip isn’t specific to Django; it’s good web development practice in general.
Upvotes: 0