Я создаю проект, который запрашивает у пользователя имя пользователя и пароль для другого сайта.Я думаю, что данные будут храниться в сессиях.Мне не нужно хранить имя пользователя и пароль в базе данных.
В любом случае, когда я запрашиваю у пользователя его имя и передаю форму ...
urls.py
from django.urls import path
from . import views
app_name = 'main'
urlpatterns = [
path('', views.enteruser, name='enteruser'),
path('success/', views.success, name='success'),
path('<str:username>/', views.home, name='home'),
]
views.py
def enteruser(request):
if request.method == 'POST':
form = EnterUserForm(request.POST)
username = request.POST['username']
password = request.POST['password']
if form.is_valid():
username = form.cleaned_data['username']
password = form.cleaned_data['password']
request.session['username'] = username
request.session['password'] = password
form.save()
return redirect('main:home', username=username, password=password)
else:
if request.session.session_key:
username = request.session['username']
password = request.session['password']
return redirect('main:home', username=username, password=password)
else:
form = EnterUserForm()
return render(request, 'main/enteruser.html', {'form': form})
forms.py
class EnterUserForm(forms.ModelForm):
password = forms.CharField(widget=forms.PasswordInput)
class Meta:
model = DuolingoUsers
fields = ['username', 'password']
labels = {
'username': 'Enter Duolingo Username:',
'password': 'Enter Duolingo Password:',
}
models.py
class DuolingoUsers(models.Model):
username = models.CharField(max_length=100, unique=True)
last_update = models.DateField(blank=True, null=True)
last_inquiry = models.DateField(auto_now=True)
... как я могу передать его в последующее представление main:home
, не раскрывая данные в URL?
Редактировать: я пробовал что-то вроде:
def home(request, username=None, password=None):
template_name = 'main/index.html'
if username is None or password is None:
if request.session.session_key:
username = request.session.get('username', None)
password = request.session.get('password', None)
Но я получаю ошибку словаря на сессиях, и я не совсем уверен, что это хороший способ сделать это.