เชื่อม กับ config แล้ว หน้าแรกรันได้ แต่พอรับ url เข้าไป กลับไม่ทำงาน

แนะนำ สอบถาม ภาษา C สำหรับผู้เริ่มต้น ภาษา Java ภาษา Python

Moderators: mindphp, ผู้ดูแลกระดาน

bolue
PHP Super Hero Member
PHP Super Hero Member
Posts: 657
Joined: 04/06/2020 10:05 am

เชื่อม กับ config แล้ว หน้าแรกรันได้ แต่พอรับ url เข้าไป กลับไม่ทำงาน

Post by bolue »

พอรับค่า url เข้ามาแล้วไม่ทำงานต่อ หน้าที่รับค่า ก็รันไม่หยุด

อยากทราบว่า มี code ตรงไหน ผิด หรือลืมอะไรตรงไหนไปหรือเปล่าคะ
C++ & java & Python-1.png
C++ & java & Python-1.png (38.11 KiB) Viewed 136 times
C++ & java & Python-2.png
C++ & java & Python-2.png (61.19 KiB) Viewed 136 times
code หน้า config

Code: Select all

[options]
host_db=localhost
port_db = 5432
database=test
user=postgres
password=123456
host=127.0.0.1
port=5000

code ทั้งหมด

Code: Select all

from flask import  Flask, render_template, request, current_app, redirect, url_for
import socket, time
from urllib.parse import urlparse
from urllib.request import urlopen, Request
from bs4 import BeautifulSoup
import psycopg2 as p
import re
from flask_paginate import Pagination, get_page_args
from flask_classful import FlaskView, route
import configparser
app = Flask(__name__)
app.config.from_pyfile('pyvenv.cfg')


con=None
config = configparser.ConfigParser()
config.read('admin.conf')

host = config['options']['host']
port = config['options']['port']
db_host = config['options']['host_db']
db_port = config['options']['port']
db_name = config['options']['database']
db_user = config['options']['user']
db_pass = config['options']['password']



class TestView(FlaskView):

    def __init__(self):
        self.action = "TEST"

    def index(self):
        return render_template("inputurl.html")

    def show(self,id,key,sort):
        print('h',id)
        con = p.connect(host=db_host, database=db_name, user=db_user, password=db_pass,port=db_port)
        cur = con.cursor()
        sql = "SELECT * FROM ur WHERE id = '%s' " % (id)
        sql = sql.encode('utf-8')
        cur.execute(sql)
        row = cur.fetchall()
        print(row)
        page, per_page, offset = get_page_args(page_parameter='page',
                                               per_page_parameter='per_page')
        sql2 = "SELECT * FROM des_ur WHERE ur_id = '%s' ORDER BY %s %s " % (id,key,sort)
        sql2 = sql2.encode('utf-8')
        cur.execute(sql2)
        rows = cur.fetchall()

        sql3 = "select count(*) from des_ur WHERE ur_id = '%s' " % (id)
        sql3 = sql3.encode('utf-8')
        cur.execute(sql3)
        total = int(cur.fetchone()[0])
        pagination = Pagination(page=page, per_page=per_page, total=total,
                                css_framework='bootstrap4')
        print(total,per_page,offset)
        return render_template('inputurl.html',
                               rows=rows[offset: offset + per_page],
                               row=row,
                               page=page,
                               id=id,
                               per_page=per_page,
                               pagination=pagination)


    def post(self):
        try:
            con = p.connect(host=db_host, database=db_name, user=db_user, password=db_pass,port=db_port)
            cur = con.cursor()
            URL = request.form['url']
            req = Request(URL, headers={
                'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36'})

            urlinfo = urlparse(URL)
            start = time.time()
            ip = socket.gethostbyname(urlinfo.netloc)
            dns_tm = time.time() - start
            print('DNS:\t\t{:.3f} seconds'.format(dns_tm))

            start = time.time()
            html = str(urlopen(req).read())
            load_tm = time.time() - start
            print('load:\t\t{:.3f} seconds'.format(load_tm))
            print('w/o DNS:\t{:.3f} seconds'.format(load_tm - dns_tm))

            sql = """INSERT INTO ur (url,dns,load_ur,wo_dns)
                                        VALUES ('%s','%s','%s','%s') RETURNING id;""" % (
            URL, dns_tm, load_tm, load_tm - dns_tm)
            sql = sql.encode('utf-8')
            cur.execute(sql)
            id1 = str(cur.fetchone()[0])
            con.commit()
            soup = BeautifulSoup(html, "html.parser")

            for link in soup.find_all('a', href=re.compile('^https')):

                print(link.get('href'))
                urlinfo2 = urlparse(link.get('href'))
                req2 = Request(link.get('href'), headers={
                    'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36'})

                start = time.time()
                ip = socket.gethostbyname(urlinfo2.netloc)
                dns_tm2 = time.time() - start
                print('DNS:\t\t{:.3f} seconds'.format(dns_tm2))

                start = time.time()
                html = str(urlopen(req2).read())
                load_tm2 = time.time() - start
                print('load:\t\t{:.3f} seconds'.format(load_tm2))
                print('w/o DNS:\t{:.3f} seconds'.format(load_tm2 - dns_tm2))
                # time.sleep(1)
                url = str(link.get('href'))
                sql2 = "SELECT * FROM des_ur WHERE url = '%s' AND ur_id= '%s' " % (url, id1)
                sql2 = sql2.encode('utf-8')
                cur.execute(sql2)
                check = cur.fetchall()
                if check:
                    pass
                    
                else:
                    sql5 = """INSERT INTO des_ur (url,dns,load_ur,wo_dns,ur_id)
                                              VALUES ('%s','%s','%s','%s','%s')""" % (
                        url, dns_tm2, load_tm2, load_tm2 - dns_tm2, id1)
                    sql5 = sql5.encode('utf-8')
                    cur.execute(sql5)
                    con.commit()
            return redirect(url_for('TestView:show',id=id1,key='url',sort='DESC'))
        except Exception as e:
            current_app.logger.info(e)
            response = 'error'
            return str(e)





TestView.register(app,route_base = '/')

if __name__ == '__main__':
    app.run(debug=True,host=host,port=port)

User avatar
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
Posts: 24767
Joined: 22/09/2008 6:18 pm
Contact:

Re: เชื่อม กับ config แล้ว หน้าแรกรันได้ แต่พอรับ url เข้าไป กลับไม่ทำงาน

Post by mindphp »

ในโค้ด ยังไม่มีส่วนไหน กำหนดเกี่ยวกับ route เลยครับ
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042

bolue
PHP Super Hero Member
PHP Super Hero Member
Posts: 657
Joined: 04/06/2020 10:05 am

Re: เชื่อม กับ config แล้ว หน้าแรกรันได้ แต่พอรับ url เข้าไป กลับไม่ทำงาน

Post by bolue »

mindphp wrote:
13/06/2020 3:16 pm
ในโค้ด ยังไม่มีส่วนไหน กำหนดเกี่ยวกับ route เลยครับ
route รับค่าจากหน้า html แบบนี้หรอคะ
C++ & java & Python-1.png
C++ & java & Python-1.png (25.45 KiB) Viewed 126 times
C++ & java & Python-2.png
C++ & java & Python-2.png (37.76 KiB) Viewed 126 times

User avatar
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
Posts: 24767
Joined: 22/09/2008 6:18 pm
Contact:

Re: เชื่อม กับ config แล้ว หน้าแรกรันได้ แต่พอรับ url เข้าไป กลับไม่ทำงาน

Post by mindphp »

ใช่ครับ ต้อง มีตั้ง ตอนที่แบ่งหน้า และ รับค่าจากฟอร์ม post, get
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042

bolue
PHP Super Hero Member
PHP Super Hero Member
Posts: 657
Joined: 04/06/2020 10:05 am

Re: เชื่อม กับ config แล้ว หน้าแรกรันได้ แต่พอรับ url เข้าไป กลับไม่ทำงาน

Post by bolue »

mindphp wrote:
13/06/2020 4:04 pm
ใช่ครับ ต้อง มีตั้ง ตอนที่แบ่งหน้า และ รับค่าจากฟอร์ม post, get
ใส่แล้วแต่ยังใช้ไม่ได้เลยค่ะ

User avatar
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
Posts: 24767
Joined: 22/09/2008 6:18 pm
Contact:

Re: เชื่อม กับ config แล้ว หน้าแรกรันได้ แต่พอรับ url เข้าไป กลับไม่ทำงาน

Post by mindphp »

ใส่อะไร แบบไหน เอาโค้ด พร้อม Error มาลงเลยครับ
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042

bolue
PHP Super Hero Member
PHP Super Hero Member
Posts: 657
Joined: 04/06/2020 10:05 am

Re: เชื่อม กับ config แล้ว หน้าแรกรันได้ แต่พอรับ url เข้าไป กลับไม่ทำงาน

Post by bolue »

mindphp wrote:
13/06/2020 6:28 pm
ใส่อะไร แบบไหน เอาโค้ด พร้อม Error มาลงเลยครับ
ค่ะพี่
แบบแรกนะคะ

Code: Select all

@route('/do_duck_stuff', endpoint='TestView:post')
    def post(self):

Code: Select all

<form action="{{url_for('TestView:post')}}" method="post">
ผลลัพธ์
C++ & java & Python-1.png
C++ & java & Python-1.png (32.76 KiB) Viewed 117 times
C++ & java & Python-2.png
C++ & java & Python-2.png (6.15 KiB) Viewed 117 times



แบบที่สองค่ะ

Code: Select all

@route('/do_duck_stuff', endpoint='do_duck_stuff')
    def post(self):

Code: Select all

<form action="{{url_for('do_duck_stuff')}}" method="post">
ผลลัพธ์
C++ & java & Python-1.png
C++ & java & Python-1.png (32.76 KiB) Viewed 117 times
C++ & java & Python-2.png
C++ & java & Python-2.png (6.15 KiB) Viewed 117 times

User avatar
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
Posts: 24767
Joined: 22/09/2008 6:18 pm
Contact:

Re: เชื่อม กับ config แล้ว หน้าแรกรันได้ แต่พอรับ url เข้าไป กลับไม่ทำงาน

Post by mindphp »

route ยังไม่ได้ กำหนด methods
ตัวอย่าง หน้า โชว์

Code: Select all

@app.route('/showdata/<int:id>',methods=['GET'])
ตัวอย่างหน้าทำงาน

Code: Select all

@app.route('/post',methods=['POST'])
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042

Post Reply
  • Similar Topics
    Replies
    Views
    Last post

Return to “Programming - C/C++ & java & Python”

Who is online

Users browsing this forum: No registered users and 2 guests